1、sql 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
一、数据库
1、创建数据库
CREATE DATABASE lesson ;
创建一个名字为lesson的数据库
2、删除数据库
drop database lesson ;
二:表
1、创建表
CREATE TABLE `mydb`.`it` (
`id` INT NOT NULL,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`)
);
在名字为mydb的数据库中创建一个表,表的名字叫it.
表中有两个字段 : id , name 。 其中主键为 id
2、删除表
DROP TABLE `mydb`.`it`;
数据库名: mydb
表名 : it
3、修改表的名字
RENAME TABLE student TO user ;
把student表的名字改为user
4、复制表
create table table2 select * from user ;
通过复制user表,来创建一个新表table2
三:增加数据
1、往表里插入数据
INSERT INTO `mydb`.`user` (`id`, `name`, `age`) VALUES ('2', 'lisid', '25');
mydb : 数据库名
user : 表名
id ,name , age :代表三个字段
VALUES :字段对应的数据
四:删除数据
1、条件删除(删除一行数据)
DELETE FROM user WHERE id=1 ;
删除id = 1 的所有数据 (删除id =1 的这一行)
五、更新数据
1、更新一个字段的值
UPDATE `mydb`.`user` SET `age`='22' WHERE `id`='1';
数据名: mydb
表名 : user
字段 : age
筛选条件 : id = 1 ;
在mydb数据库,user表中,把id = 1 的这一行的 age 属性值修改为 22
2、更新多个字段的值
UPDATE `mydb`.`user` SET `name`='奶茶妹妹', `age`='18' WHERE `id`='2';
在mydb数据库,user表中,把id = 2 的这一行的 name属性值修改为 奶茶妹妹 , age 属性值修改为 22
六:查询数据
1、查询
SELECT * FROM mydb.user;
从mydb数据库中查询user表里面的所有数据
2、单属性查询
SELECT name FROM user ;
从user表中查询所有的name属性值
3、多属性查询
SELECT name , age FROM user ;
从user表中查询所有的name 和 age 的属性值
4、条件查询 where
SELECT name , age , id FROM user where id = 2 ;
从user表中查询id等于2的所有name、age、id 的属性值,注意id的类型是整型,所以2不用加单引号
SELECT name , age , id FROM user where name = 'tom' ;
从user表中查询 name 值等于‘tom’ 的所有name、age、id 的属性值,注意name的类型是字符型,‘tom’加单引号
SELECT * FROM `user` WHERE id > 5 ;
从user表中查询 id 值 大于 5 的所有name、age、id 的属性值
所有的逻辑运算符都支持: 大于 > 、 小于 < 、 大于等于 >= 、 小于等于 <= 、 等于 = 、 不等 != (或者 <>)
SELECT * FROM `user` WHERE id BETWEEN 3 AND 8 ;
user : 表名
id : 字段名
between : 操作符 作用是选取介于两个值之间的数据范围
从user表中查询 id值在3(包含3) 到 (包含8)之间的所有name、age、id 的属性值 。 也就是 id 大于等于3, 小于等于8之间。
SELECT * FROM `user` WHERE age in ( 12 , 18 ) ;
user : 表名
age : 字段名
in : 操作符 作用是为查询条件规定多个值
从user表中查询出年龄为12岁和18岁的人所有信息。 相当于并集。
5、模糊查询 like
SELECT * FROM student WHERE phone LIKE '1825%'
student : 表名
phone : 字段名 代表手机号
LIKE : 模糊查询
% : 代表任意一个或多个字符 , 可匹配任意类型和长度的字符。
从student表中查出以1825开头的手机号
SELECT * FROM student WHERE phone LIKE '182%' AND `name` LIKE 'zhang%' ;
student : 表名
phone : 字段名 代表手机号
name : 字段名 代表名字
从student表中查出以182开头的手机号并且 名字是以zhang开头的所有信息
SELECT * FROM student WHERE phone LIKE '1825110114_'
student : 表名
phone : 字段名 代表手机号
LIKE : 模糊查询
_ : 代表一个字符
从student表中查出以1825110114开头的手机号
SELECT * FROM student WHERE phone LIKE '%114%' ;
student : 表名
phone : 字段名 代表手机号
LIKE : 模糊查询
% : 代表任意一个或多个字符 , 可匹配任意类型和长度的字符。
从student表中查出手机号包含114的所有信息
SELECT * FROM student WHERE phone LIKE '%114\%' ;
student : 表名
phone : 字段名 代表手机号
LIKE : 模糊查询
% : 代表任意一个或多个字符 , 可匹配任意类型和长度的字符。
从student表中查出以114%结尾的手机号 , 第一个 % 代表通配符 , \% 代表% 字符,没有通配符的功能
6、数量限制查询 limit
select * from user order by id limit 3 , 5 ;
从user表中查询 从3开始(包括3),数量为5 条数据。也就是3、4、5、6、7 条数据
注意5代表的是查询的数量
7、单字段排序查询 order by
* order by 语句用于根据指定的列对结果集进行排序。
* order by 语句默认按照升序对记录进行排序。
select * from mydb.`user` order by age ;
mydb : 数据库名
user : 表名
age : 排序字段
从user表中查询所有的信息,查询结果按照 age 字段排序。(默认升序)
select * from mydb.`user` order by age DESC ;
从user表中查询所有的信息,查询结果按照 age 字段降序排序。
8、多字段排序查询 order by
select * from mydb.`user` order by age DESC , `name` ;
mydb :数据库
user :表名
age :年龄
name :名字
从user表中查询所有的信息,查询结果按照 age 降序排序。如果年龄相同,就按照name,升序排序 。
9、求总 count()
SELECT COUNT( name ) FROM `user` ;
name : 字段名,代表名字
user : 表名
从user表中查询 name 值得数目,不计 null 值。
SELECT COUNT( * ) FROM `user` ;
查询user表中的记录数
SELECT COUNT( DISTINCT `name` ) FROM `user` ;
查询user表中name字段不同值的数目,相当于去重。
10、求最大值 max() 和 最小值 min()
*MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
SELECT MAX( id ) FROM `user` ;
从user表中查询 id 字段的最大值
SELECT MIN( id ) FROM `user` ;
从user表中查询 id 字段的最小值
11、求和 sum()
SELECT SUM( id ) FROM `user` ;
id : 字段名
user : 表名
查询user表中 id 值的和
12、求平均值 avg()
SELECT AVG( id ) FROM `user` ;
id : 字段名
user : 表名
查询user表中 id 值的平均数
13、显示所有数据库
SHOW DATABASES;
14、显示所有的表
SHOW TABLES;
七:视图
1、视图的基本概念
2、创建一个视图
CREATE VIEW myview as SELECT * FROM mydb.`user` ;
myview :视图的名字
mydb :数据库的名字
user : 表的名字
查询user表的所有数据,作为视图myview的数据
3、删除视图
drop view myview ;
myview : 视图的名字