基本SQL语句

  • 2019-09-02
  • 0
  • 0

数据定义语言(DDL):对库和表的增、删、改
数据查询语言(DQL):数据的查询
数据操作语言(DML):对表中的内容信息增、删、改
数据控制语言(DCL):对用户的授权/撤权

一、数据定义语言(DDL)

DDL:对库和表的增、删、改

1.1、对库操作—>建库(DDL)

# 例1、库如果不存在则,创建一个ljc的库,并指定校验规则为`utf8_general_ci`,字符集为`utf8`
mysql> create database if not exists ljc collate utf8_general_ci charset utf8;
# collate utf8_general_ci -------->指定校验规则
#修改库信息
mysql>ALTER DATABASE ljc  CHARSET utf8;

1.2、对表操作—>建表(DDL)

# 建表(DDL)
mysql>CREATE TABLE student1 (
    ->sno VARCHAR(20) NOT NULL PRIMARY KEY COMMENT '学号',
    ->sname VARCHAR(20) NOT NULL COMMENT '学生姓名',
    ->sage TINYINT UNSIGNED NOT NULL COMMENT '学生年龄',
    ->ssex enum ('1', '0') NOT NULL DEFAULT '1' COMMENT '学生性别(1是男,0是女)默认为男',
    ->sbirthday datetime NULL COMMENT '学生生日',
    ->class VARCHAR  NOT NULL COMMENT '学生班级' 
    ->);

1.3、对表结构进行修改操作(DDL)

## 添加字段(默认添加到最后)
alter table 表名 add 字段 数据类型;
mysql> alter table student1 add phone char(11); 

## 在表头添加字段
alter table 表名 add 字段 数据类型 first;
mysql> alter table student1 add phone88 char(11) first;

## 在指定字段之后添加字段
alter table 表名 add 字段 数据类型 after 字段;
mysql> alter table student1 add phone888 char(11) after sno;

## 添加多个字段
alter table 表名 add 字段1 数据类型,add 字段2 数据类型;
mysql> alter table student1 add phone666 char(11),add phone555 char(11);

## 删除字段
alter table 表名 drop 字段;
mysql> alter table student1 drop phone888;

## 修改字段的数据类型:
alter table 表名 modify 字段 数据类型;
mysql> alter table student1 modify phone int;

## 修改字段名和数据类型:
alter table 表名 change 原字段 新字段 数据类型;
mysql> alter table student1 change phone666 phone777 int;

## 修改表名
alter table 原表名 rename 新表名;
alter table student1 rename stu;

二、数据查询语言(DQL)

DQL:数据的查询

2.1、查看库的属性信息(DQL)

mysql> show create database shanghai;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| shanghai | CREATE DATABASE `shanghai` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

2.2、查看表结构(DQL)

mysql> desc student1;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| sno       | varchar(20)         | NO   | PRI | NULL    |       |
| sname     | varchar(20)         | NO   |     | NULL    |       |
| sage      | tinyint(3) unsigned | NO   |     | NULL    |       |
| ssex      | enum('1','0')       | NO   |     | 1       |       |
| sbirthday | datetime            | YES  |     | NULL    |       |
| class     | varchar(20)         | NO   |     | NULL    |       |
+-----------+---------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

2.3、查看表中的信息(DQL)

mysql> select * from shanghai.student1;
+------+----------+------+------+---------------------+--------+
| sno  | sname    | sage | ssex | sbirthday           | class  |
+------+----------+------+------+---------------------+--------+
| 2009 | zhangsan |   18 | 1    | 1900-01-01 00:00:00 | 一班   |
+------+----------+------+------+---------------------+--------+
1 row in set (0.00 sec)

2.4、select 根据条件查询表中的数据⭐

2.4.1、单独使用

-- select @@xxx 查看系统参数:select @@datadir;
-- select 函数():select CONCAT(USER,"@",HOST) from mysql.user;

2.4.2、单表子句-from

语法:

select 列1,列2 from 表
select * from 表

例子:
# -- 查询stu表中,学生姓名和入学时间
mysql> select sname,intime from stu;

2.4.3、单表子句-where

where配合等值查询:
mysql> select * from city where District='ZHEJIANG'
where配合比较操作符(<、> 、>=、 <= 、!=):
mysql> select * from city where Population < 100
where配合模糊查询like
mysql> select * from city where district LIKE 'guang%'; 
where配合逻辑运算符(and or)
mysql> select * from city where CountryCode='chn' and Population >500
mysql> select * from city where CountryCode='chn' or Population >500
where配合in语句
mysql> select * from city where countrycode IN ('CHN' ,'USA');
where配合between and
mysql> select * from city  where population BETWEEN 1000000 AND 2000000;
联合查询(union all)
mysql> select * from world.city where countrycode='USA' union all select * from world.city where countrycode='CHN';

2.4.5、单表子句-group by

作用:根据 by后面的条件进行分组,方便统计,by后面跟一个列或多个列

常用聚合函数:
  • max(): 最大值
  • min(): 最小值
  • avg(): 平均值
  • sum(): 总和
  • count(): 个数
  • group_concat(): 列转行
例子
# 例子1:统计世界上每个国家的总人口数.
mysql>select countrycode ,SUM(population) from  city  group by countrycode;

# 例子2:统计世界上每个国家的城市数量
mysql>select countrycode,COUNT(id)  from city group by countrycode;

2.4.6、排序order by

按照人口数量排序(升序)
mysql> select * from city order by population;
按照人口数量排序(降序)
mysql> select * from city order by population desc;

2.4.7 限制条件limit

按照人口数量排序,前十的
mysql> select * from city order by population limit 10;
按照步长60查找数据(翻页)
mysql> select * from world.city limit 60,60

2.4.8 join多表连接查询⭐

三、数据操作语言(DML)

DML:对表中的内容信息增、删、改

3.1、插入数据

几种插入数据的方式
 # 标准的
mysql> insert into student1 (sno,sname,sage,ssex,sbirthday,class) 
VALUES 
('2009','zhangsan',18,'1','1900-1-1','一班');

 # 偷懒的
mysql> insert into student1 values('2010','lisi',19,'1','1800','二班');

 # 针对性录入
其他值为默认。或者不指定
mysql> insert into student1(sno,sname) values (2012,'ww');

 # 同时录入多行数据
mysql> insert into  student1(sno,sname) values(2013,'ll'),(2014,'zz'); 

3.2、修改数据

mysql> update student1 set sname='www' where sno=2012;

3.3、删除数据

# 使用删除时,必须接上条件where,删除行数据
mysql>  delete from world.city where id=4097;
# 使用update代替delete伪删除
添加一个状态列
mysql> alter table world.city add state enum('0','1') default ’1';
mysql> select * from world.city;

# 将状态修改,实际数据还在,前端只显示状态为1的数据
mysql> update world.city set state='1' where state='0';

未完待续~~

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨