数据库常用结构化sql语句_1

  常用的结构化查询语言主要分为数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。特别在关系型的数据库例如(mysql、mariadb、 percona、DB2、Oracle、SQL server)等都是采用共同的SQL语句来实现增删改查等数据的管理。本文会针对以下的四种类型的结构化SQL来进行介绍。

1

2

3

4

DDL 数据定义语言  create     drop     alter

DML 数据操作语言  insert    delete   update

DCL 数据控制语言  grant    commit   rollback

DQL 数据查询语言  select

 一、  create与drop 简介

    首先create 与drop 是直接可以对数据库进行操作,例如创建数据库、删除数据库。简单示例如下,

1

2

3

4

CREATE  DATABASE  IF  NOT EXISTS   DBMS  default  character set utf8; 

#创建一个名为DBMS默认字符集为UTF8的数据库

SHOW databases; #显示当前数据库管理系统里面所有的数据库,就可以看到我们当前创建的DBMS库

Drop  database  DBMS; #删除名为DBMS的数据库

其次,create 和drop能对表进行操作,和对库的操作一致 将database 更改为table,即可创建和删除操作。后面我们要联系增删改查,所以创建以下表SQL如下:

1

2

3

4

5

6

7

8

9

10

11

12

create table if not exists user (

     id int unsigned not null auto_increment primary key,

     username  varchar(30) not  null,

     password  varchar(30)  not  null

     );

或者使用下方SQL。其实原理和表结构是一样,只是呈现方式不一样

   CREATE TABLE  if not exists `user` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(30) NOT NULL,

  `passwordvarchar(30) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

二、插入数据 insert 

    insert 是我们将数据写进数据库最用的方法之一,常见的语法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 insert  into  tablename  (COLUMN VALUEs( );

  

 #tablename 是我们要插入数据的目标表名,column是列名,values里面对应的是要插入的值,需要强

 调的当我们对所有列插入即values()中对应列与创建表结构的列顺序对应时,可以省略(COLUMN )

 insert  into  tablename   VALUEs('','','' );

 例如:

 insert  into  user    VALUEs(1,'linux','linux' );但是给id设置了主键自增所以就没必须做,

 使用上面的列名对应就可以了

 优化后: insert  into  user (username,password )   VALUE('python','java' )

 #批量插入数据

 我们还可以用 insert  into  tablename  (COLUMN VALUEs( 值1),(值2)...的方式批量插

 入效率高很多。

 isert into  user (username,password )   VALUEs('python999',334989 ),('LInuxmysql','777')

 或者

  insert  into  user (username,password )   VALUE('python','java' ),('LInuxmysql','777')

  

 注意:经测试values和value插入值时一样,需要注意的是,定义的密码是varchar()字符类型,

 而3334989是整形,也会插入成功,这里是将整形转换成字符串类型。

     将数据插入到数据库的方法除了insert外,还有load data infile (加载文件),以及从其他表查询插入的方法,可以参考之前的文章,甚至可以用navicat之类客户端工具导入。

三、删除数据

   删除数据可以分为删除部分和删除全部,删除全部里面又可以分为只删除数据和表和数据一起删除,删除表和数据 ,可以使用上面提到的drop table  tablename ,删除全部数据可以用delete   from tablename   或者tuncate  table。

    delete   from table  和tuncate table 的区别:

    delete  删除后不会刷新主键的值  例如你删除主键ID(3-5),那么下次插入数据就是从5开始。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

delete     from user  #删除所有数据

  insert  into  user (username,password )   VALUE('pythonlinux','javadocker' ),('LInuxmysql','redis')

select  *  from  user;#插入数据再查询

查询所有数据,检查我们的id:

select   * from user 

11    python    java

12    LInuxmysql    777

13    pythonlinux    javadocker

14    LInuxmysql    redis

 观察表里面的数据,可以发现第一行的id是从11开始的,这就说明delete删除数据的时候不会刷新自增值

 truncate  user 再插入数据观察

 truncate  user#清空所有数据

 insert  into  user (username,password )   VALUE('pythonlinux','javadocker' ),('LInuxmysql','redis')

select  *  from  user;#再插入数据,再查询

1    pythonlinux    javadocker

2    LInuxmysql    redis

 truncate 清空表后 再插入数据,自增列从0开始。

删除部分数据先插入多条,检查插入后的数据,

 insert  into  user (username,password )   VALUE('python','javadocker' ),('LInux','redis'),('linux',999),('redis','name ')

1    pythonlinux    javadocker

2    LInuxmysql    redis

3    python    javadocker

4    LInux    redis

5    linux    999

6    redis    name 

7    python    javadocker

8    LInux    redis

9    linux    999

10    redis    name 

11    python    javadocker

12    LInux    redis

13    linux    999

14    redis    name 

删除  id  >10的部分

delete   from user  where id >10; 然后再插入数据,查询结果如下:

1    pythonlinux    javadocker

2    LInuxmysql    redis

3    python    javadocker

4    LInux    redis

5    linux    999

6    redis    name 

7    python    javadocker

8    LInux    redis

9    linux    999

10    redis    name 

15    python    javadocker

16    LInux    redis

17    linux    999

18    redis    name 

与上面的结果相比 id不连续。

四、条件判断与限制

  条件判断主要根据数学运算符、逻辑运算符以及比较运算符等完成。

1

2

3

4

5

6

1) 数学运算符:

  +,-,*,% 

2)逻辑运算符

 &&,||,and,or ,inbetween  and

3)比较运算符:

 =,!=,>=,<=,>,<,<>

五、更改数据或者表结构

   数据的更改使用update完成,而表结构的更改时依靠alter完成,接下来先介绍update更改数据,update和delete一样,在条件限制不够严密的情况下会导致数据全部改写,是比较危险的操作,所以一定要细心。

基本的语法:update  table   set column=" "  where  判断条件;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1    pythonlinux    javadocker

2    LInuxmysql    redis

3    python    javadocker

4    LInux    redis

5    linux    999

6    redis    name 

7    python    javadocker

8    LInux    redis

9    linux    999

10    redis    name 

15    python    javadocker

16    LInux    redis

17    linux    999

18    redis    name 

UPDATE user set  username='kailinux' where id in (1,7,9)

更改后:(sql语句一般是先执行条件部分先锁定行再锁定列)

1    kailinux    javadocker

2    LInuxmysql    redis

3    python    javadocker

4    LInux    redis

5    linux    999

6    redis    name 

7    kailinux    javadocker

8    LInux    redis

9    kailinux    999

10    redis    name 

15    python    javadocker

16    LInux    redis

17    linux    999

18    redis    name

猜你喜欢

转载自blog.csdn.net/choupiaoyi2794/article/details/81184979