01.07复习mysql**
mysql -uroot -p123456 --连接数据库
update mysql.user set authentication_string=password('123456')where user='root' and Host = 'localhost'; --修改用户密码
flush privileges; --刷新权限
--------------
--两个单横线是注释
--注意语句以分号;结尾
show databases; --查看所有的数据库
mysql>use school --切换数据库, 使用:use 数据库名
Database changed
show tables; --查看数据库中的表
describe student; --显示数据库中student表的信息
creat database westos; --创建一个数据库westos
exit; --退出连接
操作数据库:
CREATE DATABASE IF NOT EXISTS www --创建数据库,加if not exists防止重复
--数据库中自动变成大写
DROP DATABASE IF EXISTS www --删除数据库www
USE `user`
SELECT `USER` FROM student --查询student表中USER字段的信息
SHOW DATABASE
数据库列类型:
data YYYY-MM-DD,日期格式
time HH: mm: ss 时间格式
datetime YYYY-MM-DD HH:mm :ss最常用的时间格式
timestamp 时间戳,19701.1到现在的毫秒数
---
数据库字段属性:
Unsigned:是无符号整数,该列不能为负数
zerofill:不足位数0填充,比如int(3) 输入5,结果为005
自增:通常是用于设计整数类型的主键,自增;
非空 NULL not null ,这个时候不赋值会报错
NULL,如果不填,就是null
创建数据库表:
CREATE TABLE IF NOT EXISTS `student`(
--表的名称(student)和字段尽量用` `括起来,防止因为是关键字而造成报错
--字符串一般使用单引号
--AUTO_INCREMENT是自增
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
--default是设置默认值
`pwd` VARCHAR(20)NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2)NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '电子邮箱',
--添加主键PRIMARY KEY
PRIMARY KEY(`id`)
)ENGINE INNODB DEFAULT CHARSET = utf8
修改与删除表/表中字段:
ALTER TABLE teacher RENAME AS teacher1
--修改表名
ALTER TABLE teacher1 ADD age INT(11)
--增加表的字段age
ALTER TABLE teacher1 MODIFY age VARCHAR(11)
ALTER TABLE teacher1 CHANGE age age1 INT(1)
--change和modify区别:modify用于修改约束,change用来给字段重命名
ALTER TABLE teacher1 DROP age1 --删除表的字段
DROP TABLE IF EXISTS teacher1 --删除表
--sql关键字大小写不敏感
外键:
---方式一创建表时添加
KEY `FK_gradeid`--定义键
--FK_gradeid是约束名
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) --给外键添加约束,CONSTRAINT为约束,REFENENCES为引用
当存被其他表引用(有外键关系)的时候此表是无法直接删除表的,需要先把那个表删除
--方式二创建后加外键
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FORERIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
--就是说:添加 约束名 外键()引用 那个表 表中的(哪个字段)
其实,数据库存储数据即可,行为数据,列为字段;
后续用程序即可实现使用多张表的数据
DML(增删改):数据操作语言
insert update delete
select(不是
insert,update
INSERT INTO `表名`(`字段1`,`字段2`)values('值1'),('值2')(...)
UPDATE `表名` SET `name` = 'xxx' WHERE id = 1 --一定要加附加条件
DELETE FROM `表名` WHERE id = 1;
TRUNCATE `student` --清空student整个表
select (DQL,数据查询语言)
SELECT * FROM student --查询全部学生
SELECT * FROM score
SELECT `列名1`, `列名2` FROM student
SELECT `StudentNo` AS 学号, `StudentName` AS 学生姓名 FROM student--这样用别名就很直观
--拼接字符串CONCAT(a,b)
SELECT CONCAT('姓名:',StudentName) AS 新名字 FROM student