# vim /etc/profile export MYSQL_HOME=/opt/mysql export PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin -------------------------------------------------------------- source /etc/profile
设置密码和权限
mysql -uroot -p -S /data/mysql.sock -e "SET PASSWORD ='mysql';create user 'root'@'%' identified by 'mysql'; GRANT ALL PRIVILEGES on *.* to 'root'@'%' WITH GRANT OPTION;" #按回车,现在还是空密码
#某一列不能为空 age int not null create table douban(id int primary key auto_increment,title varchar(20) unique ,pingfen varchar(20),xinde varchar(100) not null);
CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别', `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
SQL语句
DDL
#DDL(数据定义语言):create drop alter,对表结构的增删改 # 查询所有数据库 SHOW DATABASES; # 查看当前数据库 SELECT DATABASE(); # 创建数据库 方括号内是可选参数 # 标准语法 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ; create database itcast; # 删除数据库 drop database [ if exists ] 数据库名 ; if exists 代表数据库存在在删除 DROP DATABASE IF EXISTS teste; # 切换数据库 use 数据库名 use test #对表定义操作 # 查询当前数据库所有表 show tables; # 查询表结构 desc 表名 desc student; # 查看创建表语句 SHOW CREATE TABLE 表名 SHOW CREATE TABLE student; # 修改字段添加列 ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ]; ALTER TABLE student ADD age varchar(20) COMMENT '昵称'; # 修改数据库字段类型 #ALTER TABLE emp MODIFY 字段名 新数据类型 (长度) ALTER TABLE student MODIFY name varchar(10); # MODIFY COLUMN 一样 # 修改数据类型和字段名称 #ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新类型 (长度) [ COMMENT 注释 ] [ 约束 ]; ALTER TABLE student CHANGE name names char(20) COMMENT "哇" NOT NULL; # 删除字段 #ALTER TABLE 表名 drop 字段名称 ALTER TABLE student drop names; #修改表名 RENAME TABLE old_table_name TO new_table_name; #删除表 DROP TABLE 表名 或 TRUNCATE TABLE 表名; DROP TABLE students; #TRUNCATE TABLE student;
DML (数据操作语言):insert delete update,对表中的数据进行增删改
#插入insert普通用法 INSERT INTO `student`(`name`) VALUES ('zsr'); #插入多条数据 INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('zsr','200024','男'),('gcc','000421','女'); #省略字段 #有主键自增也必须添加,必须所有字段都要添加进去 INSERT INTO `student` VALUES (5,'Bareth','123456','男','武汉','1412@qq.com','2000-02-04','2000-02-04'); ---------------------------------------------------------------------------------------------------- #修改update UPDATE 表名 SET 字段1=值1,[字段2=值2...] WHERE 条件[]; #修改学员名字,指定条件 UPDATE `student` SET `name`='zsr204' WHERE id=1; #条件是id=1 #不指定条件的情况,会改动所有表 #不能那么搞要死人的 UPDATE `student` SET `name`='zsr204'; #修改多个属性 UPDATE `student` SET `name`='zsr',`address`='湖北' WHERE id=1; #条件是id=1 #通过多个条件定位数据 UPDATE `student` SET `name`='zsr204' WHERE `name`='zsr' AND `pwd`='200024'; #条件是name=zsr并且`pwd`='200024' ----------------------------------------------------------------------------------------------------------- #删除delete #DELETE FROM 表名 [WHERE 条件] DELETE FROM `student`; #不能那么搞要死人的 #删除指定数据 DELETE FROM `student` WHERE id=1; #DELETE和TRUNCATE 的区别,TRUNCATE 重新设置自增列,计数器会归零,而DELETE不会影响自增 #DELETE操作时原数据会被放到 rollback segment中,可以被回滚 #TRUNCATE操作时不会进行存储,不能进行回滚 测试 START TRANSACTION; #开启事务 DELETE FROM student; #删表 TRUNCATE就嗝屁了 SELECT * FROM student; #空了 ROLLBACK; #数据又有了
DQL
#DQL(数据查询语言):查询语句,凡是select语句都是DQL #SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数 SELECT * FROM student; #查询所有 SELECT `name`,`sex` FROM student; #查询指定的字段 SELECT `StudentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS 学生表;#别名 AS(可以给字段起别名,也可以给表起别名) SELECT DISTINCT `sex` FROM student; #去重查询 #where条件查询 select 查询列表 from 表名 where 筛选条件;
DCL
#DCL(数据控制语言):grant授权、revoke撤销权限 GRANT ALL PRIVILEGES on *.* TO zsr2 #用户授权(授予全部权限,除了给其他用户授权) SHOW GRANTS FOR root@localhost #查看root用户权限 REVOKE ALL PRIVILEGES ON *.* FROM zsr # 撤销权限