Mysql--基础(一)

MySQL基础 

 一、数据库的操作 

        1.SQL分类:

                DDL(数据定义语言)   :数据定义语言 - Data Definition Language,用来定义数据库的对象,如数据表、视图、索引等。常用指令:create   drop  alter  truncate

                DML(数据操作语言):数据处理语言 - Data Manipulation Language,在数据库表中更新,增加和删除记录。常用指令:updateinsertdelete 不包含查询

                DCL(数据控制语言) :数据控制语言Data Control Language,指用于设置用户权限和控制事务语句。常用指令:grantrevokeifelsewhilebegin transaction

                 DQL(数据查询语言) :数据查询语言Data Query Language,数据表记录的查询。常用指令:select

       2.数据库操作语言:

               2.1 查询当前所有的数据库:                           show     databases; 

               2.2 查看数据库的编码:                                  show     create   database     库名;        

               

               2.3 创建数据库

                         (1)  create   database  库名;:由于创建数据库的是后没有指定编码表,使用安装时默认的编码表

                         (2)  create   database  库名  character   set   编码表名  ;  创建数据库,使用指定的编码表

                         (3) drop    database    库名     ;    删除数据库

       (4) alter    database   库名  character    set    编码集;                 修改数据库编码集

                         (5)  use    库名  ;   切换数据库

                         (6) select   database() ;   查询当前正在使用的数据

                2.4 数据表结构语句                                

	  create table 表名(       
列名 数据类型, 列名 数据类型, …… 列名 数据类型 (最后一个列不需要逗号) );
注解:char 与vachar的区别?

char 的性能好。 varchar可以节省空间通常时候,如果长度不固定,我们使用varchar

                      (1) show  tables  :查看该数据库的说有表

                           (2) show  create  table   表名 ;     查看建表语句

                           (3) desc  表名;查看表结构(表列)

                           (4) 主键约束:  primary    key     auto_increment   (主键自增)

                                  注解:作用设置某一个字段为主键,主键的特性是唯一(不能重复),并且不能为空

                                             一般使用一个没有任何意义的字段,比如id作为一个主键(没有意义就需要修改)

                                            如果主键是一个int类型,还可以设置主键自增长。(在插入记录的时候可以不用设置主键,让其自动以递增的形式添加

                                            一张表只能有一个主键。            

                   create table 表名 (
	        id int primary key auto_increment,
	        name varchar(20),
	        ………….
           ); 

 

                            (5) 唯一约束:      

          唯一约束:unique   内容不允许重复,可以为null(null不算重复)。 
          一个表里可以添加多个唯一约束。

          写法: 列名 类型(长度) unique
          【示例】
          create table 表名 (
	        id int primary key auto_increment,
	        name varchar(20) unique,
	        ………….
          );

          唯一约束和主键约束的区别
          1、唯一约束可以是空(null)。 但是主键约束不能为空
          2、一张表中只能有一个主键,但是唯一约束可以有多个

                     (6)非空约束

            非空约束:not null 。不允许为空。 表示该列的内容不允许为空。

               写法: 列名 类型(长度) not null,
              【示例】
               create table emp(
	         id int primary key auto_increment,
	         name varchar(20) unique,
	         age int not null,			
	         ………….
               );                    

      2.5 数据表结构的修改

                    (1) 增加一列  :alter   table     表名      add   列名     类型(长度)    约束;

                    (2) 修改现有列:   alter   table     表名      modify      列名      类型    约束;

                    (3) 修改现有列名称:  alter   table    表名    change    旧列名     新列名     类型       约束;

                    (4) 删除现有列:   alter  table   表名      drop    列名

                    (5) 修改表名:  rename    table   旧表名   to    新表明

                    (6) 修改表的字符集:  alter    table     表名     character   set   编码集

                    (7) 删除表 :drop    table    表名

                    (8) 查看mysql服务的所有客户端和服务端使用的字符集:show variables like 'character%';

                    (9)  先删除表,在创建表: truncate   table     表名;

                    (10) 事物:

                               start      transaction;

                               commit  (成功)

                               rollback (回滚)

            2.6、一些常用:

                       select   distinct  列名     from  表名   [ where 条件]                       去重    

                       ifnull(列名,默认值)      判断该列是否为null,如果为null,返回默认值,否则返回实际值。

                       

                        round(数值,小数的位数)                   实现四舍五入的结果

                         

  执行顺序:select …要显示的内容.. from …表名.. where  条件…. group by …分组的列 …having …分组后的条件… order by …排序

        select4from1..  where2.. group by ..3…having ..5… order by ...6.
from 表名

where 条件:
	  逻辑运算符:and or not
	  比较运算符:< > <= >= <> =
	  在....之间:between...and...
	  in(set):任意set集合中的一个条件成立即可
	  is null/is not null
	  模糊匹配:like % _
	  
group by 列:对列进行分组。

having 条件:
	  逻辑运算符:and or not
	  比较运算符:< > <= >= <> =
	  在....之间:between...and...
	  int(set)
	  is null/is not null
	  模糊匹配:like % _
	  聚合函数(sum,avg,max,min,count)
	  别名
	  
order by desc/asc

  

                     数据备份: mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径

                    建表后添加外键约束: alter table 从表名称 add foreign key (外键列的名称) references 主表名称(主键)         

建表时添加外键约束

/*创建部门表*/ create table dept( id int primary key auto_increment, name varchar(20) ); /*创建员工表*/ create table employee( id int primary key auto_increment, name varchar(20), age int , salary double, dept_id int, foreign key (dept_id) references dept(id) );

  

     

      

 

 

 

 

 

 

 

 

 

 

 

 

                                               

posted @ 2019-04-27 23:51  stt101517  阅读(134)  评论(0编辑  收藏  举报