select sum(life) from hero group by sex //查询年龄小于30岁的人,按性别分组,统计每组的人数 select sex,count(*) from hero where age<30 group by sex
select avg(max_score) from hero
select * from hero where attack>350; select * from hero where max_score<12;
UPDATE student SET sex='男' WHERE id=2
update student set age='26',address='北京' where id=3;
delete from student where id=3
create table stu3 like student1
insert into stu3 select * from student1
关键字最好大写,可以提高代码执行效率,其次是更易于可读性
主键约束 PRIMARY KEY
作用 : 用来唯一标识一条记录 , 每个表都应该有主键 , 并且每个表只有一个主键 , 通常不用业务字段作为主键 , 单独给每张表设计一个id字段 , 把id作为主键 . 逐渐是给数据库和程序员使用的 , 不是给最终的客户使用的 , 所以主键有没有含义没有关系 , 只要不重复 , 非空就行
创建表tbl1 , 以id作为主键
CREAT TABLE tbl1 ( id int PRIMARY KEY , name varchar(20) , age int ) ;
3 . 删除主键
ALTER TABLE tbl1 DROP PRIMARY KEY ;
4 . 主键自增 : AUTO_INCREMENT 表示自动增长
CREAT TABLE tbl2 ( id int PRIMARY KEY AUTO_INCREMENT , name varchar(20) , age int ) ;
5 . 默认的AUTO_INCREMENT开始值是1 , 修改起始值语法如下 :
ALTER TABLE 表名 AUTO_INCREMENT = 起始值
数据库约束
约束种类:
PRIMARY KEY:主键
NOT NULL:非空
DEFAULT:默认
FOREIGN KEY:外键
1 . LIMIT 语句 : 限制查询记录的条数 , limit子句在最后
offset : 偏移量 , 要跳过几条
lenth : 要查询的几条数据
2 . 分页 每一页显示固定的条数
1 . GROUP BY 分组
SELECT 字段名1 ,字段2 ,...聚合函数 FROM 表名 GROUP BY 字段1 , 字段2 ...HAVING 条件
# HAVING 对分组之后的数据进行再次过滤
# HAVING后面可以使用聚合函数
% : 表示0个或多个字符
_ : 表示一个字符
1 . 蠕虫复制 : 在已有的数据基础上 , 将原来的数据进行复制 , 插入到对应的表中
INSERT INTO 新表名 SELECT * FROM 旧表名 ; INSERT INTO 新表名(字段1 , 字段2 ...) SELECT 字段1 , 字段2... FROM 旧表名
1 . 创建表
CREAT TABLE 表名 ( 字段名1 字段类型1 , 字段名2 字段类型2 , ... );
2 . 查看表
SHOW TABLES ;
3 . 查看表结构
DESC 表名 ;
4 . 查看创建表语句
SHOW CREAT TABLE 表名 ;
5 . 快速创建表结构相同的表
CREAT TABLE 新表名 LIKE 旧表名
6 . 删除表
DROP TABLE 表名 ; DROP TABLE IF EXISTS 表名 ; # 判断存在即删除
7 . 添加表列
ALTER TABLE 表名 ADD 列名 类型
DDL语句:操作数据库以及表的create, drop, alter等
DML语句:对表数据进行insert, delete, update
DQL语句:对表数据进行各种维度select查询
数据库约束:正确性、有效性、完整性
不报错,就不会影响后面的执行
TRUNCATE TABLE 表名
是清空整个表的数据,重新建立一个字段相同的表,主键从零开始;
DELETE FROM 表名(+字段)
是一条条数据进行删除,主键不重置。
2023年4月26日
数据库的下载网址:
https://dev.mysql.com/downloads/installer/5.5.html
creat database 数据库名 character set 字符集;(默认是Utf-8形式) (也可以指定gbk)(指定某一个库的特殊编码)
show create database 数据库名;(查看某个数据库创建时候的sql 语句)
show databases;(查看数据库)
alter database 数据库名 default character set 字符集名; 修改某个数据库的编码方式.
drop database 数据库名;(删除某个数据库)
SELECT DATABASE();(查看现在正在使用的数据库)
USE 数据库名;(使用某一个数据库)(一次只能使用一个数据库) (如果使用了另一个,那么第一个自动关闭)
虽然Mysql对于大小写不敏感,但大写关键字会比小写关键字效率更高
sql :结构化查询语言 (主要是用来查数据,所以叫查询语言) (操作数据库,表,数据)
sql语句的分类 1,DDL数据定义语言(create,alter,drop) 2,DML数据操作语言(insert,delete,update) 3,DQL数据查询语句(select,where)*** 4,DCL数据控制语言(grant,revoke)
数据库管理系统保证数据库的安全和完整,用户通过其来进行访问表中的数据.
数据库管理程序可以管理多个数据库.
针对不同的应用创建不同的数据库
一个数据库中可以创建多个表
SQL语句与数据库约束
DDL语句
DML语句
DQL语句
数据库约束:主键约束、唯一约束、非空约束
sql语句的分类:
DDL:数据定义语言,用来定义数据库的对象:数据库、表、列,进行创建删除修改(create、dropt、alter)
DML:数据操作语言,用来对数据库中表的数据进行增删改(insert、delete、update)
DQL:数据查询语言,用来对数据裤中表的数据进行查询、条件查询(select、where)
DCL:数据控制语言,用来定义数据的访问权限和安全级别,及创建用户,关键字:grant、revoke
DQL 对标数据的slect查询,简单查询、条件查询、模糊查询、分组查询
DML对表数据进行 insert增加,delete删除,update修改
DDL语句操作:数据库以及表的create,drop,alter等
更新表记录:
1.不带条件修改数据
UPDATE 表名 SET 字段名=值;
2.带条件的修改
UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
3.一次修改多列
UPDATE 表名 SET 字段名1 = 值 ,字段2 = 值... WHERE 字段名=值
删除表的记录
1.不带条件的删除:DELETE FROM 表名;
2.带条件的删除:DELETE FROM 表名 WHERE 字段名=值;
3.TRUNCATE TABLE 表名;-->也能删除表中的全部数据
DELETE和TRUNCATE TABLE都可以删除表中的数据, DELETE是一条一条数据的删除;TRUNCATE TABLE是直接抹除,重新创建一个结构一模一样的新表;
DDL操作表
先查看正在使用的数据库:
SELECT DATABASE();-->没有的话:USE 数据库名;-->SELEST DATABASE();
当正在使用这个数据库的时候,如果进行创建表的话,那么就对应创建在这个数据库中;
创建表:
CREATE TABLE 表名(字段名1 字段类型1,字段名2 字段类型2,...);
CREATE -->表示创建
TABLE--->表示创建一张表
可以写成(黑窗口里面不好写):
CREATE TABLE 表名(
字段名1 字段类型1,
字段名2 字段类型2
);
#字段类型不要写中文
mysql 中的数据类型:
varchar没有默认的值,后面需要添加(k),k表示长度
特殊的需求也可以进行编辑!!!!
如:
查看表:
查看表是否创建成功:SHOW TABLES();
查看表的结构:DESC 表名;
查看创建表的sql语句:SHOW CREATE TABLE 表名;
快速创建一个表结构相同的表:
CREATE TABLE 新表名 like 旧表名;
删除表:
直接删除:DROP TABLE 表名();
判断一个表是否存在并删除表:DROP TABLE IF EXISIT 表名;
修改表的结构:
增加一个列表:ALTER TABLE 表名 ADD 列名 类型;
修改列的类型:ALTER TABLE 表名 MODIFY 列名 类型;
修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
删除列:ALTER TABLE 表名 DROP 列名;
修改表名:RENAME TABLE 表名 TO 新表名;
修改字符集:ALTER TABLE 表名 CHARACTER SET 字符集;