1.查看数据库(3种)
(1)show databases;
(2)show databases \G
(3)mysql -e ‘show databases’ -uroot -p123.com
2.创建数据库
语法: create database 数据库名;
3.查看当前所在数据库
语法:show tables;
4.删除数据库
语法: drop database 数据库名;
5.if子句
语法:drop database if exists 表名;(存在则删除)
语法:create database if exists 表名;(不存在则创建)
6.创建表的语法:create table 表明(文段名 类型);
7.查看表的结构 : desc 表名;
8.查看创建表时执行了那些命令: show create table 表名;
9.删除表 : drop table 表命; 删除数据库:drop database 数据库名;
10.修改表名称 alter
语法: alter table 表名 rename 新表名;
11.修改表中的字段类型
语法: alter table 表名 modify 修改名 类型;
12.修改表中的字段类型和字段名称
语法:alter table 表名 change 源字段名 新字段 新类型;
13.再表中添加字段
语法:alter table 表名 add 字段名 字段类型;
14.再表中指定位置添加字段
第一行添加,语法:alter table 表名 add 字段名 字段类型 first;
指定位置添加,语法:alter table 表名 add 字段 字段类型 after 指定字段;
15.删除表中字段
语法:alter table 表名 drop 字段名;
关于表中的操作
1.插入记录
语法:insert into 表名 values(字段值1,字段值2);
2.分开插入表记录
语法:insert into 表命(字段1,字段2)values(字段值1,字段值2);
3.查询表中记录
语法:select * from 表名;
4.查看指定字段记录
语法:select 字段 from 表名;
5.查看其他数据库的表或不在本数据库上进行查看
语法:select 字段 from 数据库名.表名;
6.删除表中记录
语法: delete from 表名 where 字段=字段值;
7.更新记录,update修改表中数据。
语法:update 表名 set 要修改的字段名 where 字段号;
sql条件查询语句
1.去重查询
语法: select distinct 字段 from 表名;
2.使用AND和OR进行多条件查询
语法:select 字段 from 表 where 条件 and 条件;(共同成立)
语法:select 字段 from 表 where 条件 or 条件;(其中成立一个即可)
3.mysql区分大小写查询binary。
mysql默认不区分大小写;binary区分大小写。
语法:select 字段 from 表 where 字段条件;(例如:where name=‘qwe’或where name=‘QWE’)
4.MYSQL查询排序
语法:select 字段1 字段2 from 表命 order by 字段名 asc(desc); (asc默认升序,desc降序)
5.mysql查询命令帮助
语法:help 需要查询的命令;
mysql数据类型
1.int类型修饰符
unsigned 无符号整数,只能保存正整数;zerofill 修饰符,用0填充输出的值。
语法:create table 表(字段 类型 unsigned或zerofill,字段 类型 unsigned zerofill );
2.浮点型数据类型
Float表示单精度浮点数值,double表示双精度浮点数值,float和double是浮点型,decimal是定点型。
double和decimal数值类型,比float存储小数更精确。
语法:create table 表( 字段 浮点类型(n,m)); (n,m) n为整数位,m是小数保留位
3.字符串char和varchar
区别:
char需要指定字符串范围,0~255;char处理数据类型的速度快。
varchar字符串可变长,0~65535,除去起始和结束的3个字符;varchar使用更加灵活,占用的内存和硬盘空间少。
4.enum 枚举:只能取其中一个值;set:取多个值不能重复。
mysql基础命令语句
1.修改数据类型,添加字段
语法:alter table 表名 add 字段名 列类型 [not null | null] [primary key] [unqiue] [auto_increment] [default varlue];
not null非空,null为空; primartkey主键 ;unqiue唯一索引 ; auto_increment列值自动增长 ; default默认。
2.主键和唯一索引的区别:
主键是一种约束,唯一索引是一种索引,两者在本质上是不同的;
主键创建后一定包含一个唯一性索引,唯一性索引不一定就是主键;
唯一性索引列允许空值, 而主键列不允许为空值。
常用select命令
1.当前日期和时间:select now( );
2.当前日期:select curdate( );
3.当前时间:select curtime( );
4.当前数据库:select database( );
5.当前用户:select user( );
6.当前系统信息: select variables;
语法:show [global | sesslon] variables [like_or_where];
7.查看系统运行状态信息: show processlist;
运行状态:show [global | session] status [like_or_where];
导入导出数据库mysqldump
1.导出数据库(备份)
语法:mysqldump -u 用户名 -p密码 数据库名 > 导出的文件名
2.导入数据库(还原)
语法:mysql -u 用户名 -p密码 数据库名 < 导出的文件名 或 source /root/数据库.表名
mysql语句进阶
1.逻辑运算符
and 与 ; or 或 ;not 非
例如:select 字段 from 表名 where 条件( 例如price>40 and price<60 );
2.算数运算符
= 等于 ; =!不等于 ; > 大于; < 小于; >= 大于等于; <=小于等于
在where语句中not in和in相反。
语法 : select 字段 from 表名 where 条件;
3.排序
升序: order by ‘排序字段’ asc
降序: order by ‘排序字段’ desc
例如:select price from books where price in(30,40) order by price desc; (在books表中按照价格30到40进行降序排列。
4.范围运算
Between......and... 什么到什么之间
Between....and.... 可以使用>和<代替更加准确
例如:select price from books where price between 10 and 20;或 select price from books where price >30 or price <50;
5.模糊匹配查询
语法:字段 [not]like '通配符'; %任意字符
例如:select bname from books where bname like ‘%程序%’; 在books表中查询名字是开头或结尾是以程序的书名。
mysql子查询(把子查询的结果给外部查询使用)
1.普通查询
语法:select 字段 from 表 where 字段条件;
2.嵌套查询
语法:select 字段 from 表 where 字段=( select 字段 from 表 where 字段条件);
例如:select bname,btypeid from books where btypeid=(select btypeid from category where btypename='平面');
3.limit限定显示的条目
语法:select * from table limit 偏移量,行数;
4.把子查询和限制条目,算数运算结合起来查询
1)嵌套子查询
例如:select bname,price from books where price < (select price from books where publishing="清华大学出版社" order by price limit 0,1);
2)不适用limit,all表示子查询中返回值中的最小值。
例如:select bname,price from books where price < all(select price from books where publishing="清华大学出版社");
5.多表连接查询
内连接:根据表中的共同字段进行匹配
外连接:左外连接、右外链接。
1)内连接
根据表中共同的字段进行匹配,将表中符合条件的记录进行连接。
语法: select 字段 from 表1 inner join 表2 on表1.字段=表2.字段;
例如:select i.xh,i.xm,c.yw,c.shx from stu_info i inner join stu_chj c on i.xh=c.xh;
2)外连接 (分为左外连接;右外连接)
左连接: select 字段 from a表 left join b表 on 连接条件; a主表显示指定字段内容,b从表
右连接: select 字段 from a 表 right join b 表 on 连接条件; a是从表;b是主表,都显示。
6.聚合函数(执行特定功能的代码块)
1)sum ( )求和;语法:select sum(字段) from 表;
2)avg ( ) 平均值; 语法:select avg(字段) from 表 where 条件;
3)max( )最大值;语法:select max(字段) from 表 ;
4)min( )最小值; 语法:select min(字段) from 表;
5)count( ) 统计记录数; 语法: select count(*) from 表; select count(distinct price) from books;去掉books表中重复的价格并统计。
7.算数运算
+ - * /
语法:update 表 set 条件 where 条件;
8.字符串函数
Substr(字段名,开始,结束) 截取
语法:select substr(字段,开始,结束) from 表 where 条件;
Concat(开始,分隔,结束) 拼接
语法:select concat(字段,分割,结束) from 表;
9.大小写转换
upper( ) 大写;lower( ) 小写
语法:select upper[lower](字符) from 表 where 指定条件;
Null和not null的区别
1)字段类型是not null,为什么可以插入空值?
空值不占用空间;mysql中的null占用空间。
2)为什么not null的效率比null高?
Null不是空值需要占用空间,进行比较时null会参与字段的比较。
3)判断字段是否位空值时可以使用:select * from 表名 where is not null;或select * from 表名 where <>’’;
delete和truncate的区别
1)delete用于删除表中的数据,加where条件则删除匹配条件,不加则清空表;truncate清空表,不需要加where条件。
2)表中字段设置into_increment,delete不会清除自动增长的计数器;truncate则会清零自动增长的计数器。
3)delete删除操作会记录到bin-log日志中;truncate的删除操作则不会记录到bin-log日志中。