mysql 学习

路径:C:\Program Files\MySQL\MySQL Server 5.5
以上教程很不错
 
增删改查
mysql 字母大小写不敏感。
 
 终端操作数据库服务器
1.登陆
运行这个命令之前,一定要启动mysql.--------(在管理员终端运行)
打开mysql,需要通过cmd终端:mysql -u root -p
                输入密码:111 (笔记本中密码改为123)          可以进入
断开mysql
mysql> quit;
Bye
或者
mysql> exit;
Bye
 
2. 查询数据库服务器中的所有数据库

 

3. 选择某一数据库进行操作

use 名称;

查看此数据库的内容: show tables;   由于没填东西,一般情况为空。

查询数据库记录select:
select * from 数据表名称;                      //查询数据表中所有数据
select user,pass from 数据表名称;        //查询数据表中user盒pass列的数据
用where查询tb_mrbook表,条件是Type(类别)为php的所有图书。
select * from tb_mrbook where type = 'php';
 
显示存储引擎: show engines;
 
 
4.创建数据库: create database 名称

查看此数据库的内容: show tables;   由于没填东西,一般情况为空。

删除数据库:drop  database [ if exists] 名称;

 

5. 创建数据表 create table table_name(列名称1,属性,列名称2,属性。。。。show)

复制表  create table 表名1 like 表名2;

复制表 create table 表名1 as (select * from 表名2);

修改表结构---添加一个表信息-----alter table 表名称 add  信息,modify 表信息 ;

举例:mysql> alter table table_name add email varchar(50) not null,modify user varchar(40);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
---添加新字段email,改user字段里的内容
 
重新命名表的名称:rename table 数据表名1 to 数据表2;
举例: mysql> rename table table_name to table_ivy;
Query OK, 0 rows affected (0.00 sec)
删除表 drop table if exists 表名1 ;
删除表:drop table 表名称;   删除表内容:truncate table 表名称;
mysql> drop table table_ivy;
Query OK, 0 rows affected (0.00 sec)
mysql> desc table_ivy;
ERROR 1146 (42S02): Table 'teacher.table_ivy' doesn't exist

6. 查看创建好的数据表的具体结构

show columns  from 数据表名称 from 数据库名称;

或者用describe或者desc 数据表名称 列名称;

 
 
 
7.查询数据表种的记录select
select * from 数据表名称;                      //查询数据表中所有数据
select user,pass from 数据表名称;        //查询数据表中user盒pass列的数据
用where查询tb_mrbook表,条件是Type(类别)为php的所有图书。
select * from tb_mrbook where type = 'php';
 
 

因为我们并没有插入什么具体的数值,所以内容为空。

 

8. 向数据表中插入记录 insert

插入记录Insert: 建立一个空的数据库盒数据表时,首先要考虑的是如何想数据表中添加数据,通过
insert into 数据表名称(column_name,column_name2,...) values(value1,value2,...);

再次select看下

再次insert一组记录

 

9. Mysql常用数据类型

MySQL支持多种类型,大致可以分为三类:

数值

日期/时间

字符串(字符)类型。

日期 选择按照格式

数值和字符串 按照大小

 

10. 插入多条数据记录到数据表

输入多条可以通过sublime编写,之后复制到终端

 

11.删除数据

delete from pet where name="fluffy";

 

12. 修改数据

 update pet set name=“旺旺财" where owner="周星驰";

 

update student set age=23 where age>20;  改数据表中列名称的数据

 

13. 总结:数据记录常见的操作

增加:insert

删除:delete

 

修改:update

查询:select

14.mysql建表约束

(1)主键约束  primary key

它能够唯一确定一张表中的一条记录,也就是我们通过给耨个字段添加约束,就可以使的改字段不重复且不为空

create table user(
 id int primary key,
  name varchar(20)
);

给id加入primary key约束

我们再次添加同样的信息进入表中,就会报错,主要是由于这里存在主键约束。

 实验证明:id不能重复,id不能为空

联合主键:只要联合的主键有一个不重复就可以(但是都不允许空的存在)

 

(2)自增约束   primary key auto_increment

实现id号自己增长

 

 

创建表的时候,忘记创建主键约束了,怎么办?
create table user4(
 id int,
 name varchar(20)
);
添加主键约束
alter table user4 add primary key(id);
删除主键约束
alter table user4 drop primary key;
使用modify 修改字段,添加约束
alter table user4 modify id int primary key;

(3)外键约束 foreign_key

 

(4)唯一约束  unique

约束修饰的字段的值不可以重复

create table user5(
 id int,
 name varchar(20)
);
添加唯一约束
alter table user5 add unique(name);

也可以:
 create table user5(
  id int,
  name varchar(20),
  unique(name)
);
 或者
  create table user5(
  id int,
  name varchar(20) unique
);
 或者
   create table user5(
  id int,
  name varchar(20),
  unique(id,name)
);

(5)非空约束  not null

修饰的字段不能为空 NULL

create table user6(
   id int,
   name varchar(20) not null
 );
insert into user6(id) values(1);
ERROR 1364 (HY000): Field 'name' doesn't have a default value
insert into user6 values(1,"张三"); 正确
insert into user6(name) values("张三");正确

 

(6)默认约束   default

 
 
 
从tb_mrbook.id,tb_mrbook.bookname,author,price from tb_mrbook,tb_bookinfo where tb_mrbook.bookname = tb_bookinfo.bookname and tb_bookinfo.bookname = 'mysql 入门与实践';
从tb_mrbook和tb_bookinfo数据表中查询bookname='mysql入门与实践'的作者和价格。。
 
用where查询tb_mrbook表,条件是Type(类别)为php的所有图书。
select * from tb_mrbook where type = 'php';
 
用group by 对结果分组;
查询tb_mrbook表,按照type进行分组,求每类图书的平均价格。
select bookname,avg(price),type from tb_mrbook group by type;
 
用distinct在结果中去除重复行
select distinct type from tb_mrbook;    //查询tb_mrbook表,并在结果中去掉类型字段type中重复数据。
 
order by 对结果排序  (默认升序,desc降序
查询tb_mrbook 表中的所有信息,按照“id”进行降序排列,并且只显示3条记录。
select * from tb_mrbook order by id desc limit 3;
 
like模糊查询:
“%”可以匹配一个或者多个字符,而“_”只匹配一个字符。
select * from tb_mrbook where bookname like('_h%');  // 查找所有第二个字母是'h'的图书。
 
 
2018/09/23
掌握函数------mysql函数:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等
 
数学函数:
1. abs(x)函数---求绝对值
mysql> select abs(5),abs(-5);
+--------+---------+
| abs(5) | abs(-5) |
+--------+---------+
|      5 |       5 |
+--------+---------+
1 row in set (0.00 sec)
2. floor(x)函数---返回小于或者等于x的最大整数。
mysql> select floor(1.5),floor(-2);
+------------+-----------+
| floor(1.5) | floor(-2) |
+------------+-----------+
|          1 |        -2 |
+------------+-----------+
1 row in set (0.00 sec)
3. rand()函数----返回0~1之间的随机数。但是rand()返回的数是随机的。
mysql> select rand(),rand();
+--------------------+--------------------+
| rand()             | rand()             |
+--------------------+--------------------+
| 0.8454050355082424 | 0.5882898956428187 |
+--------------------+--------------------+
1 row in set (0.00 sec)
4. pi()函数---返回圆周率
mysql> select pi();
+----------+
| pi()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
5. truncate(x,y)函数---返回x保留到小数点后y位的值。
mysql> select truncate(2.23456789,3);
+------------------------+
| truncate(2.23456789,3) |
+------------------------+
|                  2.234 |
+------------------------+
1 row in set (0.00 sec)
6. round(x)函数和round(x,y)函数--- round(x)函数返回距离x最近的整数,也就是对x进行四舍五入处理;round(x,y)函数返回x保留到小数点位后y位的值,截断时需要进行四舍五入处理。
mysql> select round(1.6),round(1.2),round(1.123456,3);
+------------+------------+-------------------+
| round(1.6) | round(1.2) | round(1.123456,3) |
+------------+------------+-------------------+
|          2 |          1 |             1.123 |
+------------+------------+-------------------+
1 row in set (0.00 sec)
7. sqrt(x)函数---用于求平方根。
mysql> select sqrt(16),sqrt(25);
+----------+----------+
| sqrt(16) | sqrt(25) |
+----------+----------+
|        4 |        5 |
+----------+----------+
1 row in set (0.00 sec)
 
字符串函数
1.insert(s1,x,len,s2)函数---将字符串s1中x位置开始长度为len的字符串用字符串s2替代。
mysql> select insert('mrkj',3,2,'book');
+---------------------------+
| insert('mrkj',3,2,'book') |
+---------------------------+
| mrbook                    |
+---------------------------+
1 row in set (0.00 sec)
2. upper(s)函数和ucase(s)函数---将字符串s的所有字母变成大写字母。
mysql> select upper('mrbook'),ucase('mrbook');
+-----------------+-----------------+
| upper('mrbook') | ucase('mrbook') |
+-----------------+-----------------+
| MRBOOK          | MRBOOK          |
+-----------------+-----------------+
1 row in set (0.00 sec)
3. left(s,n)函数----返回字符串s的前n个字符。
mysql> select left('mrbccd',2);
+------------------+
| left('mrbccd',2) |
+------------------+
| mr               |
+------------------+
1 row in set (0.00 sec)
4. rtrim(s)函数---去掉字符串s结尾处的空格
mysql> select concat('+',rtrim(' mr '),'+');
+-------------------------------+
| concat('+',rtrim(' mr '),'+') |
+-------------------------------+
| + mr+                         |
+-------------------------------+
1 row in set (0.00 sec)
 
日期和时间函数
1. curdate()函数和current_date()函数--获取当前的日期
mysql> select curdate(),current_date();
+------------+----------------+
| curdate()  | current_date() |
+------------+----------------+
| 2018-09-23 | 2018-09-23     |
+------------+----------------+
1 row in set (0.00 sec)
2. curtime()函数和current_time()函数--获得当前时间
mysql> select curtime(),current_time();
+-----------+----------------+
| curtime() | current_time() |
+-----------+----------------+
| 20:59:35  | 20:59:35       |
+-----------+----------------+
1 row in set (0.00 sec)
3. now()函数---获得当前日期和时间
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2018-09-23 21:00:47 |
+---------------------+
1 row in set (0.00 sec)
mysql> select current_timestamp(),localtime(),sysdate();
+---------------------+---------------------+---------------------+
| current_timestamp() | localtime()         | sysdate()           |
+---------------------+---------------------+---------------------+
| 2018-09-23 21:01:49 | 2018-09-23 21:01:49 | 2018-09-23 21:01:49 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)
 
 
 
 
select @@basedir; 查看工作路径
 
 
 
posted @ 2019-07-07 21:06  lililili——  阅读(244)  评论(0)    收藏  举报