zoukankan      html  css  js  c++  java
  • MySql语法基础

    1、创建和使用数据库(DDL: 数据定义语言. 主要指的是操作数据库, 操作数据表, 增加列.)

    1) 查看当前数据库
    
    show databases;
    
    2) 创建数据库
    
    create database 数据库名称;
    
    3)使用和切换数据库
    
    use 数据库名称
    
    4)删除数据库
    
    drop database 数据库名称;
    

    2、对表的操作

     1)增

    创建数据表
    
    create table 数据表名(
     列名  数据类型 [约束],
     列名  数据类型 [约束],
     。。。
    );
    约束
    	作用: 用来保证数据的完整性和安全性.
    	分类: 
    	单表约束:
    	主键约束: primary key		//auto_increment(自动增长)
    	唯一约束: unique
    	非空约束: not null
    多表约束:	
    	外键约束: foreign key

     2)删

    drop table 数据表名;

     3)改

    给表增加一列字段                                                         
    	alter table 表名 add 列名 数据类型 约束;                     
    修改某列字段的约束和类型                                             
    	alter table 表名 modify 列名 数据类型 约束;                
    修改某列字段的名字,约束,类型                                        
    	alter table 表名 change 旧列名 新列名 数据类型 约束;   
    删除指定的列                                                               
    	alter table 表名 drop 列名;                                       
    修改表名                                                                     
    	rename table 旧表名 to 新表名;                                 
    修改表的码表                                                               
        alter table 表名 character set 指定的码表;                   
        alter table 表名 charset 指定的码表; 
    
    约束 
    给已经创建的表增加约束
        alter table 表名 add 约束 (列名)
    给已经创建的表删除primary key约束
        alter table 表名 drop 约束
                            

     4)查

    查询所有的数据表        
    	show tables;          
                                    
    查询指定数据表(表结构)
    	desc 数据表名;        

    3、SQL语句操作表数据(DML: 数据操作语言. 主要指的是操作数据, 增删改.                //update, insert, delete)

     1)添加

    格式:
    第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
    INSERT INTO table_name
    VALUES (value1,value2,value3,...);
    第二种形式需要指定列名及被插入的值:
    INSERT INTO table_name (column1,column2,column3,...)
    VALUES (value1,value2,value3,...);
    
    通过insert语句实现.                                                            
    A: 创建表.                                                                         
    	create table users(                                                        
    		uid int primary key auto_increment,                            
    		uname varchar(20),                                                   
    		age int                                                                     
    	);                                                                                 
    B: 通过SQL语句插入数据.                                                    
    	insert into users values(null,'王丽坤', 23), (null,'刘亦菲',31); 

     2)删

    delete from 数据表名 where 条件;		//删除表数据, 不会重置主键ID. 
    truncate table 数据表名;				//删除表数据, 会重置主键ID.        

     3)改

    update 数据表名 set 列名1=值,列名2=值,列名3=值 where 条件;
    注意:如果您省略了 WHERE 子句,所有的记录都将被更新!

     4)查(DQL: 数据查询语言. 主要指的是操作数据: 查询.)

    select 
    [distinct] 列名1, 列名2 as '别名',列名3... 
    from 表名 
    where 分组前的条件筛选                                     
    group by 要分组的列 
    having 分组后的条件筛选 
    order by 要排序的列 [asc/desc] 
    limit 起始索引, 结束索引;     
    
    
    
    A. 最基本的查询:                                                                                                                                         
    	select * from 数据表名;			        //全列名                                                                                        
    	select 列名1,列名2,列名3 from 数据表名;		//指定列名                                                                                 
                                                                                                                                                                   
    B. 带别名的查询:  也可以省略                                                                                                                                        
    	关键字 as                                                                                                                                              
                                                                                                                                                                   
    C. 带条件的查询:                                                                                                                                          
    	a. 条件运算符                                                                                                                                         
    		>,<, >=, <=, =, !=(<>)                                                                                                                      
    	b. 区间(范围)运算符   这些值可以是数值、文本或者日期。  不在范围内的在bettween前加 not                                                                                                                            
    		between 值1  and 值2;                                                                                                                       
    	c. 逻辑运算符                                                                                                                                         
    		and or not                                                                                                                                        
    	d. 固定值的查询                                                                                                                                      
    		in (值1,值2,值3)                                                                                                                                  
    	e. 模糊查询                                                                                                                                            
    		like 条件. (包含)                                                                                                                                          
    		//一般会结合占位符使用.                                                                                                                      
    		//_占一个位置  %占多个位置                                                                                                                 
    		                                                                                                                                                       
    D. 如果表中有重复数据, 可以将其去重:  distinct		                                                                                           
    	select distinct 字段名称1,字段名称2... from  表名;                                                                                        
    	                                                                                                                                                           
    E. 排序操作: order by                                                                                                                                 
    	格式:                                                                                                                                                     
    		SELECT * 字段列表 FROM 表名 ORDER BY 排序字段1 [排序方式],排序字段2 [排序方式];                                
                                                                                                                                                                   
    	排序方式:                                                                                                                                               
    		desc(降序) 和 asc(升序), 默认为升序排序                                                                                                
                                                                                                                                                                   
    	如果是多个字段排序, 会先按照第一个字段进行排序,如果第一个字段有相同的, 然后在按照第二个字段排序                
                                                                                                                                                                   
    F. 日期计算                                                                                                                                                
    	select year('1988-01-01');		//获取年份, 即: 打印结果是为 1988                                                                
                                                                                                                                                                   
                                                                                                                                                                   
    G. is null和 is not null值                                                                                                                              
    	格式:                                                                                                                                                     
    		字段 is null   		//筛选这个字段为null的数据                                                                                          
    		字段 is not null 		//筛选这个字段不为null的数据                                                                                   

    4、聚合函数

    count();	//一般用于获取数据表的行数.
    max();		//获取某一列的最大值.     
    min();		//获取每一列的最小值.     
    avg();		//获取某一列的平均值.     
    sum():		//获取某一列的和.   
    mid():          //提取字符   MID(column_name,start[起始位置,length])      

    5、SQL语言分类

    DDL: 数据定义语言. 主要指的是操作数据库, 操作数据表, 增加列.                                         
    		//create, drop, alter                                                                                          
    DML: 数据操作语言. 主要指的是操作数据, 增删改.				//update, insert, delete                                                                                                    	                                                                                                                           
    DCL: 数据控制语言. 主要指的是 创建用户, 设置权限, 设置安全级别.		//create,  grant         
    DQL: 数据查询语言. 主要指的是操作数据: 查询.                                                                
    	//select, from, where                                                                                             

    6、数据库的备份和还原

    1) 备份命令                                                                             
    	格式:                                                                                  
    		mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径         
    		//由于mysqldump命令不是sql命令,需要在dos窗口下使用。  
    	示例:                                                                                  
    		mysqldump -uroot -p123456 test01 >/root/test01.sql       
    		//其中: test01是数据库的名字                                             
                                                                                                 
    2) 恢复命令                                                                             
    	//注意: 恢复数据库,需要手动的先创建数据库:                         
                                                                                                 
    	格式:                                                                                  
    		create database test01;		//创建数据库                           
    		mysql -u 用户名 -p 数据库名 < 磁盘SQL文件路径                 
    		                                                                                     
    	示例:                                                                                  
    		mysql -uroot -p123456 test01 < /root/test01.sql   
    3) 注意:                                                                                                                  
    	在备份数据的时候,数据库不会被删除。可以手动删除数据库。同时在恢复数据的时候,    
    	不会自动的给我们创建数据库,仅仅只会恢复数据库中的表和表中的数据。                      
    	                                                                                                                         
    4) 备份数据表.		//备份数据表的时候, 只会备份结构(字段)和数据, 不会备份主键(约束).         
    	备份表不存在:                                                                                                      
    		create table 数据表名 select * from 要备份的数据表名;                                         
    	                                                                                                                         
    	备份表存在:                                                                                                         
    		insert into 数据表名 select * from 要备份的数据表名;                                                        

    7、多表查询

    交叉查询:		//理解, 没有什么特殊意义.                                                                                                                    
    	格式:                                                                                                                                                                
    		select * from 表A,表B;			//查询结果是两张表的: 笛卡尔积.                                                                               
    										//笛卡尔积指的是两张表(总条数)的乘积:  表A的总条数 * 表B的总条数                                      
                                                                                                                                                                               
    连接查询:                                                                                                                                                              
    	内连接查询: inner join                                                                                                                                         
    		显示内连接:                                                                                                                                                   
    			select * from 表A inner join 表B on 条件;                                                                                                     
    			//select * from 表A join 表B on 条件;                                                                                                           
    			                                                                                                                                                               
    		隐式内连接:                                                                                                                                                   
    			select * from 表A,表B where 条件;                                                                                                               
    	                                                                                                                                                                       
    	外连接查询: outer join                                                                                                                                        
    		左外连接查询:                                                                                                                                                
    			select * from 表A left outer join 表B on 条件;                                                                                               
    			//select * from 表A left join 表B on 条件;                                                                                                     
    		                                                                                                                                                                   
    		右外连接查询:                                                                                                                                                
    			select * from 表A right outer join 表B on 条件;                                                                                             
    			//select * from 表A right join 表B on 条件;                                                                                                   
                                                                                                                                                                               
    子查询:                                                                                                                                                                 
    	概述:                                                                                                                                                                
    		一个SQL语句的条件需要依赖另一个SQL语句的查询结果.                                                                                       
    		                                                                                                                                                                   
    	常用关键词的用法:                                                                                                                                              
    		in: 只要满足其中一个就行.                                                                                                                                
    			//回忆:age=23 or age=24? 等价于 age in (23,24)                                                                                       
    			//in 表示条件应该是在多个列值中。                                                                                                               
    			//in:使用在where后面,经常表示是一个列表中的数据,只要被查询的数据在这个列表中存在即可。                         
    			                                                                                                                                                               
    		exists:	//表示存在,当子查询的结果存在,就会显示主查询中的所有数据。                                                             
    			select * from A where exists(select A_ID from B);	                                                                                       
    			                                                                                                                                                               
    		union和union  all的使用法		//要求拼接双方的表结构一致.                                                                               
    			UNION语句:                                                                                                                                             
    				用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)                                                                 
    				//select * from A  union   select * from B;                                                                                               
    			                                                                                                                                                               
    			UNION ALL 语句:                                                                                                                                      
    				用于将不同表中相同列中查询的数据展示出来;(包括重复数据)                                                                    
    				                                                                                                                                                           
    		case when语句:                                                                                                                                             
    			格式:                                                                                                                                                      
    				CASE sex                                                                                                                                             
    				WHEN '1' THEN '男'                                                                                                                              
    				WHEN '2' THEN '女'                                                                                                                              
    				ELSE '其他' END                                                                                                                                    

    8、创建索引

    创建索引
    create index index_name on table_name (cloumn_name)
    创建唯一索引
    create unique index index_name on table_name (cloumn_name)
    撤销索引
    alter table table_name drop index index_name
    drop index [index_name] on table_name
    添加索引
    alter table table_name add index index_name (cloumn_name)

    9、数据类型

    1)数值类型

    2)日期类型

    3)字符串类型

    10、sql的分类

    1、DDL语句 (数据库定义语言)  对数据库 表 列 进行操作
    查看数据库:show database;
    创建数据库 create database 数据库名;
              create database 数据库名 character set 需要使用的编码;
    查询创建数据库语句:show create database 数据库名;
    删除数据库 drop database 需要删除的数据库名;
    查看当前正在使用的数据库 select database();
    使用数据库: use 数据库名
    
    
    创建表: creat table 表名(字段名 类型(长度) [约束],字段名 类型(长度) [约束]..);
    查看表: show tables;
    查看创建表的语句: show creat table 表名;
    查看表结构: desc 表名;
    删除表: drop table 表名;
    向表中添加字段: alter table 表名 add 字段名 类型 [约束];
    修改 对字段进行修改 但不修改字段名: alter table 表名 modify 字段名 类型 [约束];
    改变 对字段进行修改 可以修改字段名: alter table 表名 change 旧字段名 新字段名 类型 [约束];
    删除表中的列: alter table 表名 字段;
    修改表名: rename table 旧表名 to 新表名;
    
    
    
    2、DML语句(数据库操作语言)   对数据库里的数据进行操作  增 删 改
    
    insert into 表名(字段名,字段名..) values(值,值,..);
    insert into 表名 values(值,值,..);
    update 表名 set 字段=值,字段=值..where 条件 ;
    delete from 表名 where 条件 ;
    
    truncate delete区别: 
        delete 删除数据时 自动增长不会清除
        truncate删除数据时 清除自动增长 重写计数
    
    
    3、DCL语句(数据库控制语言)   用于设置用户权限和控制事务语句
    4、DQL语句(数据库查询语言)   select.......
    
  • 相关阅读:
    POJ1204:Word Puzzles——题解
    HDU2222:Keywords Search——题解
    CF17E:Palisection——题解
    BZOJ2565:最长双回文串——题解
    POJ3974:Palindrome——题解
    接口测试的另一种方式 – 接口测试平台
    接口测试的另一种方式 – 接口测试平台
    接口测试的另一种方式 – 接口测试平台
    美团招聘-测试开发工程师
    美团招聘-测试开发工程师
  • 原文地址:https://www.cnblogs.com/haojia/p/12386204.html
Copyright © 2011-2022 走看看