紧接上文,环境搭建成功之后,如何开始进行简单的SQL练习

一、DDL(Data Definition Language)数据库定义语言

什么是DDL?举个简单的例子,比如Excel表格,想新建表格,就需要先创建一个Excel文件,然后定义好表格的表头,随后补充信息。而这DDL就是进行创建表格、定义表头、修改表头、删除表字段这些操作的。

【1】建库&删除

创建名为databasename的数据库:

#### 建库 ####create database databasename;#### 删库 ####drop database  databasename;

【2】在库中建表&删表

创建名为tablename的表:

### 进入/使用databasename库  ###use databasename### 在库中建表  ###create table tablename(添加的字段 数据类型 约束); ## 至少要有一个字段### 在库中删表  ###drop table tablename;##### 创建新表student1且表字段与‘student ’一样  ####create table student1 like student;

如上文中创建一个表名为company的表

create table company        (id int primary key not null,        name text not null,        age int mot null,        address char(50),        salary real);

其中:

primary key:为主键,具有唯一性,上例中将设为id主键且值不能为空,表中可以没有主键

int、char、real:这些事字段中的存储值的数据类型,和Excel中有文本存储,有数字存储一样

(50):定义该字段的存储长度

具体含义如下图所示:

创建表成功后通过命令可查库内所有的表

show tables;

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

创建表成功后也可以通过命令查看tablename表结构

desc  tablename;

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

【3】修改表

A.修改表名

alter table +表名 +rename +修改后的名称

比如修改上面的表名为NewTable

sql设置主键_sql设置主键外键约束_sql alter语句设置主键

B.修改表字段名称/数据类型/约束

alter table  +表名 change  +原字段 +新字段 数据类型 (约束)

比如同时修改表字段salary的名称、数据类型和约束

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

若只想单独修改字段名称,则在命令后不追加数据类型和约束即可,如下

alter table NewTable change salary phone_number;

C.修改表字段顺序

#### 将某字段放到第一位 ####alter  table +表名 modify  某字段 数据类型  first#### 将字段A放在某字段后 ####alter  table +表名 modify  字段A 数据类型  after 某字段;

比如将NewTable表中的phone_number放到第一个位置

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

将NewTable表中的phone_number放在name之后

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

D.删除表字段

alter table +表名 drop + 某字段;#### 删除该字段后,同时会删除该列数据

比如删除表中的phone_number字段

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

注意:若要删除主键,则需要先删除主键约束

在MySQL中去掉一个表格的主键需要分两种情况:

(1)该字段同时设置为且自增长(auto_increment),如下表

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

此时需先现将自增长去掉

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

然后再删除主键约束

alter table 表名 drop primary key;

(1)该字段只设置了主键约束sql设置主键,可以直接删除主键,如下

sql设置主键外键约束_sql alter语句设置主键_sql设置主键

删除主键约束后就能像上面删除phone_number字段一样删除主键字段了

E.增加表字段

alter table +表名 add + 添加的字段 数据类型 约束(默认值、非空、主键、自增长、外键等)

比如给NewTable表中添加married字段,数据类型为char,不能为空

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

二、DML(Data ManipulationLanguage)数据库操作语言

什么是DML?Excel表格中表头等表结构完成建立之后,需要新增、修改、删除、查询表数据,而DML正是对表数据进行增删改查操作

【1】增

表格我们建好之后,开始对数据进行操作,首先来看下如何写入数据,写入数据可用如下命令:

insert into 表名(字段 1,字段2,..)values(数据1,数据2,....);###### 将表‘student’的数据插入表‘student1’  ###### insert into student1 select * from student;  #####  指定字段插入,如果student1有数据是不能插入,需要重新创建一个表;insert into student1(id,nameselect id,name from student;

注意:

1、字段数据类型为字符时,插入需要加引号;

sql alter语句设置主键_sql设置主键_sql设置主键外键约束

2、插入的数据数量刚好等于表头字段数量时,表头字段可以省略;

3、插入多条数据时,用逗号隔开即可

比如,插入一条数据

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

同时插入多条数据

sql设置主键外键约束_sql alter语句设置主键_sql设置主键

插入的数据数量刚好等于表头字段数量时,表头字段可以省略

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

【2】删

数据写完后,若想进行删除操作,可以使用如下语句:

delete from 表名 where 删除条件;#### 删除大量数据,建议使用如下数据truncate + 表名

其中删除条件可以是单个,也可以组合

1、常见的单个条件

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

2、常见的条件连接词

andor、between ...and..、in 、not inis null、is not null

比删除NewTable表中id等于4的数据

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

删除年龄为28且名字叫WangWu的数据

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

【3】改

在写入数据的过程中难免出错,此时若想修改数据,则可采用如下语句:

update 表名  set 字段=新数据 where 更改条件

比如将NewTable表中Lisi的年龄改为26

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

【4】查

实际工作中数据库已经被建立,且已有数据,所以我们更多的是通过条件去查询,从而获得我们想要的数据。查询可通过如下语句:

select XXX  from 表名 where 查询条件;###  其中 XXX——想显示出来的内容

(1)查询结果限制输出:比如查NewTable表中年龄为28中的一人(限1人)

sql alter语句设置主键_sql设置主键_sql设置主键外键约束

(2)查询结果指定输出:比如查NewTable表年龄为28,输出第2条到第3条

sql设置主键_sql设置主键外键约束_sql alter语句设置主键

也可以只输出某一条,比如查NewTable表年龄为28,输出第2条

sql设置主键_sql设置主键外键约束_sql alter语句设置主键

(3)查询不为空的数据:比如查NewTable表address不为空的数据

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

(4)查询不在列表中的数据:比如查NewTable表name不是zhangsan、zhangsi的数据

sql alter语句设置主键_sql设置主键_sql设置主键外键约束

(5)通过like进行模糊查询

 select * from 表名 where 某字段 like 'XXXX%' 

比如查NewTable表中name含有zhang的数据

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

查NewTable表中name含有s的数据

sql设置主键_sql设置主键外键约束_sql alter语句设置主键

(6)查询到的数据进行排序:比如查NewTable表通过id降序

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

查NewTable表name含有s的数据再通过age升序

sql设置主键_sql设置主键外键约束_sql alter语句设置主键

(7)查询中常用的函数

1、sum——求和:比如求NewTable表中所有人的年龄之和

sql设置主键外键约束_sql alter语句设置主键_sql设置主键

2、max——最大值;min——最小值:比如NewTable表中id最大、年龄最小的值

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

3、count——总行数:比如查NewTable中共有多少人

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

4、函数与group by结合使用:先建一个学生表

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

按班级查出数学最高分

sql设置主键_sql alter语句设置主键_sql设置主键外键约束

查哪一些班级的数学平均成绩大于80

select class,avg(math) as avg_math from student group by class having avg_math>80;

sql设置主键外键约束_sql设置主键_sql alter语句设置主键

使用注意:

a.聚合函数可以单独使用

b.聚合函数与groupbyXXXhaving配合使用时:先分组sql设置主键,在对原表计算,计算出来的结果与分组合成新表,最后对新表过滤

c.当一个查询语句同时出现了where,group by (having),order by的时候,执行顺序是:

1.执行where xx对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

(若含有有聚合函数,则将先对原表进行计算,与第2结果集合成新表,再继续第3点)

3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

5.针对第4个结果集order by 排序。

编写顺序:

select class,avg(math) as avg_math from student where age>18 group by class having avg_math>60 order by class asc;

sql alter语句设置主键_sql设置主键外键约束_sql设置主键

注意事项:

【1】where不能放在GROUPBY后面

【2】having是跟GROUPBY连在一起用的,放在groupby后面,此时的作用相当于where

(8)数据库基本信息查询

查询数据库版本:

select version();

查询数据服务器的当前时间:

select now();

查询当前使用的是哪个数据库:

select database();

查询当前登录用户:

select user();

其他常规操作

set linesize 100;  #设置行高100set pagesize 100;  #设置每页显示的数目100

三、应用篇——创建用户与授权

3.1创建用户预授权的相关指令

进入mysql数据库:

use mysql;

查询mysql库已建哪些用户:

select host,user from user

创建用户:

insert into user (host,user,password)values('localhost','king',password('123456'));

刷新:

flush privileges

查看数据库的指定授权用户的权限:

show grants for 'king'@'%';

授予增删改查权限:

grant select,update,delete,drop on *.* to 'king'@'localhost' identified by '123456'

授予所有权限:

grant all privileges on *.* to 'king'@'localhost' identified by '123123'

取消所有权限:

revoke all on *.* from 'king'@'%' ;

删除用户:

delete from user where user='zhongguo'and host='localhost';

修改root用户的密码(勿乱改):

update user set password=password('123456') where user='root';

更改用户密码:

SET PASSWORD FOR 'username'@'host'=PASSWORD('newpassword');

修改当前用户密码:

SET PASSWORD=PASSWORD('newpassword');

切记:在创建用户,删除用户,授权,取消授权,修改密码等操作后都要刷新一下

3.2实例:创建一个’demo’远程用户授予该用户所有权限

Step1-显示MySQL内的所有数据库:

show databases;

Step2-进入mysql库:

use mysql;

Step3-查看mysql库中所有的表:

show tables

Step4-查看user这个表中的host和user:

select host,user from user

Step5-向user中插入新用户:

insert into user(host,user,password)values('%','demo'password('1234'));

step6-刷新:

flush privileges

step7-显示demo是否拥有权限:

show grants for 'demo'@'%';

至此你已基本掌握SQL相关语句

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889