当前位置: 澳门新濠3559 > 数据库 > 正文

数据控制语句,这些语句定义了不同的数据段、

时间:2019-10-07 09:07来源:数据库
SQL是Structure Query Language(结构化查询语言)的缩写。 MySQL—基础(SQL语句),mysql基础sql语句 SQL语句: DDL(Data DefinitionLanguages)语句:数据定义语言;操作对象:数据段、数据库、表、

  SQL是Structure Query Language(结构化查询语言)的缩写。

MySQL—基础(SQL语句),mysql基础sql语句

SQL语句:

    DDL(Data Definition Languages)语句:数据定义语言;操作对象:数据段、数据库、表、列、索引等。

    数据库:

        创建:CREATE DATABASE dbname;

        删除:DROP DATABASE dbname;

      表:

        创建:CREATE TABLE tablename(

                         id INT(5) auto_increment(自增关键词) PRIMARY KEY,

                         name VARCHAR(20) NOT NULL);

        删除:DROP TABLE tablename;

        修改:ALTER TABLE tablename RENAME new_tablename;(修改表名)

           ALTER TABLE tablename MODIFY name VARCHAR(10);(修改某列的属性)

           ALTER TABLE tablename ADD column_name VARCHAR(20) [FIRST/(AFTER col_name)](作为插入的位置);(添加一列)

           ALTER TABLE tablename DROP col_name;(删除一列)

           ALTER TABLE tablename CHANGE old_col_name new_col_name VARCHAR(20) [FIRST/(AFTER col_name)];(修改列名)

           (!CHANGE和MODEFY区别:CHANGE可以修改列名,MODIFY不可以,但是CHANGE两次列名都得写。)

     DML(Data Manipulation Languages)语句:数据操纵语句;操作对象:表的增删查改

         增:INSERT INTO tablename(col1_name,col2_name) values(value1,value2);

         删:DELETE FROM tablename [WHERE CONDITION];

         查:SELECT * FROM tablename;

         改:UPDATE tablename set col_name = 'value' where id = 1;

         查询升级版(还会更新):

            ONE:

              SELECT dep,COUNT(*)

              FROM tablename

              GROUP BY dep

              HAVING COUNT(*) >= 2;

            TWO:

              SELECT *

              FROM tablename

              WHERE col_name='abc'

              LIMIT 0,2(0,2意为:从序号0开始后面的两条数据,eg:2,2意为,从序号1开始后面的两条)

              ORDER BY col_name DESC;

            THREE:

              SELECT *

              FROM tablename

              WHERE dep IN(

                      SELECT dep

                      FROM tablename_1);(!如果子查询记录数唯一,IN可以用“=”代替。)

            FOUR:

              SELECT dep FROM tablename

              UNION / (UNION ALL)

              SELECT dep FROM tablename_2

         知识点:表的连接查询。

             WITH ROLLUP:对分类聚合的结果再汇总。

             HAVING和WHERE的区别:WHERE是聚合前进行条件筛选,HAVING是聚合后进行条件筛选,能用WHERE时优先使用WHERE这样对查询可以

                          做到一定的优化。

             UNION和UNION ALL的区别:UNION是将UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。

     DCL(Data Control Languages)语句:数据控制语言(开发人员很少使用);操作对象:数据许可、访问级别

         授权:GRANT SELECT,INSERT ON tablename.* TO 'Z1'@'localhost' IDENTIFY BY '123';

         收回:REVOKE INSERT ON tablename.* FROM 'Z1'@'localhost';

        知识点:元数据,为数据的数据,如表名列名等表的各种属性名称。

            information_schema数据库就是用来记录MySQL中的元数据信息,此数据库是一个虚拟的数据库,物理上并不存在相关的目录和文件,全部为视图。

            视图:

               SCHEMATA:所有数据库信息。

               TABLES:数据库中的表信息

               COLUMNS:表中的列信息

               STATISTICS:表索引的信息

     

           

SQL语句: DDL(Data Definition Languages)语句:数据定义语言;操作对象:数据段、数据库、表、列、索...

SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

  1. SQL分类

  SQL主要可以分为三个类别:

图片 1

DDL语句:数据定义语句,包括create,drop,alter等

  1.DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的关键字有: create 、drop、alter等。

1

DML数据:数据操纵语句,包括select,update,delete,insert等

  2.DML(Data Manipulation Language)语句:数据库操纵语言,用于添加,删除,更新和查询数据库,检查数据完整性。常用的语句关键字:insert 、delete 、 update和select等。

SQL分类

DCL语句:数据控制语句,grant,revoke等

  3.DCL(Data Control Language)语句:数据库控制语言,用于控制不同的数据段直接的许可和访问级别的语句。这些语句定义了数据库,表,字段,用户的访问权限和安全级别。主要的关键字包括:grant、revoke等。

SQL语句主要可以划分以下3个类别:

  1. DDL语句

  

1)DDL语句:数据定义语句,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的关键字主要包括creat、drop、alter等。

2.1 连接数据库

  DDL语句:

2)DML语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括 inster、delete、update 和 select等。

图片 2

  DDL是数据库定义语言的缩写,是对数据库内部的对象进行创建、删除、修改等操作的语言。

3)DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke等。

首先通过命令mysql -uroot -p 连接mysql服务器,输入正确的密码后会出现上图的内容,大致意思为:

  1).创建数据库:CREATE DATABASE dbname;

2

命令结束使用 ; 或者 g

  2).查看数据库:SHOW DATABASES;

DDL语句

当前连接的次数,每次连接会递增1show

  3).选择要操作的数据:USE dbname;

DDL是数据定义语句的缩写。是对数据库内部的对象进行创建、删除、修改等操作的语言。它和DML语句的最大区别是DML只是对表内部数据操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。DDL语句更多地由数据库管理员(DBA)使用,开发人员一般很少使用。

当前mysql版本为 5.7.17

  4).查看所有数据表:SHOW TABLES;

1)创建数据库

可以通过 help;  或者 h 显示帮助文档,通过 c 命令来清楚命令行buffer

  5).删除数据库:DROP DATABAES dbname;

CREATE DATABASE dbname

2.2 DDL语句

  6).创建表:CREATE TABLE tablename;

例如,创建数据库test1,命令执行如下:

图片 3

  7).查看表的定义:DESC tablename / SHOW CREATE TABLE tablename;

create database test1 ;

默认包括包含四个数据库

  8).删除表:DROP TABLE tablename;

如果需要查询系统中都存在哪些数据库,可以使用以下命令查看:

information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。

  9).修改表类型: MODIFY,增加表字段:ADD,删除表字段:DROP,字段改名:CHANGE

show databases ;

mysql:存储系统的用户权限信息。

    注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便,但是 change 的优点是可以修改列名称,modify 则不能。

在系统中会存在4个由MySQL系统自动创建的数据库,分别为:

performance_schema:用于收集数据库服务器性能参数

  DML语句:

information_schema : 主要存储系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。

sys:可以快速的了解系统的元数据信息

  DML是指对数据库中表记录的操作,主要包括了插入,更新,删除,查询等开发人员日常使用最频繁的操作。

cluster : 存储系统的集群信息。

创建数据库:CREATE DATABASE dbname;

  1.插入记录:INSERT INTO tablename (字段1,字段2,....) VALUES(value1,value2,...);

mysql : 存储系统的用户权限信息。

查看数据库: SHOW DATABASES;

  2.更新记录:UPDATE tablename SET 字段1=value1,字段2=value2,.... [WHERE CONDITION];

test : 系统自动创建的测试数据库,任何用户都可以使用。

选择数据库: USE dbname;

   更新多表:UPDATE t1,t2... SET t1.字段1=expr1,t2.字段1=expr1.... [WHERE CONDITION];

选择要操作的数据库:

删除数据库:DROP DATABASE dbname;

   注意:多表更新的语法更多地用来根据一个表的字段来动态的更新另一个表的字段。

USE dbname


  3.删除记录:DELETE FROM tablename [WHERE CONDITION];

例如,选择数据库test1 :

显示表:SHOW TABLES;

     删除多表:DELETE t1,t2,...  FROM t1,t2,...  [WHERE CONDITION];

use test1 ;

创建表:分别对应 列名、类型、约束

     注意:不管是单表还是多表删除,不加 where 条件都会把表的所有记录删除,操作时一定要小心。

查看test1数据库中创建的所有数据表 :

CREATE TABLE tablename(

  4.查询记录:SELETE * FROM tablename  [WHERE CONDITION];

show tables ;

        column_name column_type constraints;

    查询时常用的关键字:DISTINCT(去重),ORDER BY(排序,DESC/ASC ),LIMIT(显示的行数--解释不太规范),GROUP BY(分类),HAVING(对分类后的结果进行筛选),

2)删除数据库

)

   WITH ROLLUP(对分类聚合后的结果进行再汇总),聚合函数(sum<求和>,max<最大值>,min<最小值>,count<记录数>)

删除数据库的语法,如下:

查看表:DESC TABLE;

   WHERE后面的条件是一个字段用=比较,除了=以外,还可以使用 >,<,<=,>=,!=等比较运算符;多个条件直接还可以使用or 、and等逻辑运算符进行多条件查询。

drop database dbname ;

查看完整表:SHOW CREATE TABLE tabelname;

  5.表连接:表连接分为外链接和内连接,他们的主要区别是,内连接仅选出两张表内互相匹配的记录,而外连接会选出其他不匹配的记录,我们常用的是内连接。

例如,要删除test1数据库:

删除表:DROP TABLE tablename;

     外连接又分为左连接和右连接,右连接和左连接之间类似,可以互相转化。

drop database test1 ;


  6.子查询:某些情况下,当进行查询的时候,需要的条件是一个select的结果,这个时候就会用到子查询,子查询会用到的关键字有:in、not in 、=、!=、exists、not exists等。

3)创建表


   如果子查询记录数唯一,可以用=代替in;

在数据库中创建一张表的基本语法如下:

修改字段:ALTER TABLE tablename MODIFY column_name column_definition

   注意:子查询和表连接之间的转换主要应用于两个方向:

CREATE TABLE tablename (

修改字段:ALTER TABLE tablename ADD column_name column_definition

      表连接在很多情况下用于优化子查询,

column_name_1 column_type_1 constraints ,

删除字段:ALTER TABLE tablename DROP column_name column_definition

      MySql4.1以前的版本不支持子查询,需要用表连接来实现子查询的功能。

column_name_2 column_type_2 constraints ,

修改字段:ALTER TABLE tablename CHANGE column_name_old column_name column_definition

  7.记录联合:将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来。关键字:UNION 和 UNION ALL ,UNION ALL是把结果集合并到一起,而UNION则是进行了一次DISTINCT,去除重复记录。

. . .

字段位置:可通过 AFTER column_name 或者 FIRST

  DCL语句是DBA用来管理系统中的对象权限时使用,一般开发人员很少使用,常用的关键字有:grant , revoke等;

column_name_n column_type_n constraints )

修改表名: ALTER TABLE tablename RENAME tablename_name

 

其中 , column_name 是列的名字;column_type 是列的数据类型; constraints 是这个列的约束条件。

2.3 DML语句

  总结:MySQL在变种的sql基础上进行了很多扩展,本文章只是对一些简单的常用语法进行了汇总,有未曾写到的东西还请查询官方文档。

例如,创建一个名称为emp的表。表中包括ename(姓名)、hiredate(雇佣日期)和sal(薪水)三个字段,字段类型分别为varchar(10)、date、int(2)

  

create table emp ( ename varchar(10) ,

hiredate date ,

sal decimal (10, 2) ,

deptno int(2) ) ;

表创建完毕后,如果需要查看一下表的定义,可以使用如下命令:

DESC tablename

例如,查看emp表:

desc emp ;

如果需要查看创建表的SQL语句,可以使用如下命令:

show create table emp G ;

注:G 选项的含义是使得记录能够按照字段竖向排列,以便更好地显示内容较长的记录。

4)删除表

表的删除命令如下:

DROP TABLE tablename

例如,要删除数据表emp:

drop table emp ;

5)修改表

修改表类型 ,语法如下:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]

例如,修改表emp的ename字段定义,将 varchar(10)改为varchar(20):

alter tabke emp modify ename varchar(20);

增加表字段,语法如下:

ALTER TABLE tablename ADD[COLUMN] column_definition [FIRST|AFTER col_name]

例如,在表emp中新增加字段 age ,类型为 int(3):

alter table emp add column age int(3);

删除表字段,语法如下:

ALTER TABLE tablename DROP [COLUMN] col_name

例如,将字段age删除:

alter table emp drop column age ;

字段改名,语法如下:

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]

例如,将age改名为age1,同时修改字段类型为 int(4):

alter table emp change age age1 int(4) ;

修改字段排列顺序:

前面介绍的字段增加和修改语句(ADD/CHANG/MODIFY)中,都有一个可选项 first | after column_name ,这个选项可以用来修改字段在表中的位置,ADD增减的新字段默认是加载表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置。

例如, 将新增的字段 birth date 加在 ename之后:

alter table emp add birth date after ename ;

修改 age 字段,将它放在最前面:

alter table emp modify age int(3) first ;

注意:CHANGE/FIRST|AFTER COLUMN 都属于MySQL在标准SQL上的扩展,在其他数据库上不一定适用。

更改表名,语法如下:

ALTER TABLE tablename RENAME [TO] new_tablename

例如,将表 emp 改名为 emp1:

alter table emp rename emp1 ;

3

DML语句

DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最多的操作。

1)插入记录

向表中插入记录的基本语法如下:

INSERT INTO tablename (field1 , field2 ,. . . ,fieldn) VALUES(value1 , value2 , . . . ,valuen);

例如,向表 emp 中插入记录:

insert into emp (ename, hiredate, sal, deptno) values ('zzx1', '2000-01-01', '2000', 1);

也可以不指定字段名称,但是 values 后面的顺序应该和字段的排列顺序一致:

insert into emp values('lisa', '2001-01-02', '3000', 2);

含可空字段、非空但是含有默认值的字段、自增字段,可以不用再insert后的字段列表中出现,values后面只写对应字段名称的 value 。这些没写的字段可以自动设置为NULL、默认值、自增的下一个数字。

例如:只对表中的ename和sal显示插入值:

insert into emp (ename, sal) values('dony', '1000') ;

在MySQL中,insert语句可以一次性插入多条记录。

2)更新记录

表里的记录值可以通过update命令进行更改,语法如下:

UPDATE tablename SET field1 = value1,field2 = value2,. . .,fieldn = valuen [WHERE CONDITION]

例如,将表emp中ename为 "lisa"的sal从3000更改为4000:

update emp set sal=4000 whereename='lisa' ;

3) 删除记录

使用delete删除记录,语法如下:

DELETE FROM tablename [WHERE CONDITION]

例如,在emp中将ename为dony的记录全部删除:

delete from emp where ename='dony' ;

注意:不加where条件将会把表的所有记录删除,所以操作时一定小心。

4)查询记录

基本语法如下:

SELECT * FROM tablename [WHERE CONDITION]

例如,将表emp中的记录全部查询出来:

select * form emp ;

编辑:数据库 本文来源:数据控制语句,这些语句定义了不同的数据段、

关键词: 澳门新濠3559