IT评测·应用市场-qidao123.com

标题: Mysql学习笔记(连载中) [打印本页]

作者: 汕尾海湾    时间: 2023-4-6 12:40
标题: Mysql学习笔记(连载中)
Mysql

01 使用CMD连接数据库
  1. -- 在控制台连接数据库(需将位置切换到mysql所在地址)
  2. mysql -u root -p
  3. password:12345
  4. -- 修改mysql账户密码及权限,安装配置完后慎用
  5. update mysql.user set authentication_string = password('12345') where user = 'root' and Host = 'localhost';-- 修改用户密码
  6. flush privileges; -- 刷新权限
  7. --------------------------------------------------
  8. -- 所有语句需要使用;作为结尾
  9. show databases; -- 查看所有数据库
  10. use test01; -- 切换数据库 use+数据库名
  11. show tables; --查看数据库中所有的表
  12. describe `user`; --显示某张表的信息
  13. create database test01; -- 创建一个数据库
  14. exit; -- 退出连接
  15. -- 单行注释
  16. -- 下面是多行注释
  17. /*
  18. hello
  19. */
复制代码
02 操作数据库

操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写!!
2.1 操作数据库

  1. CREATE DATABASE test01; -- 创建数据库01
  2. -- 但问题是如果test01存在,系统会报错
  3. -- 所以一般会加入一个判断条件
  4. CREATE DATABASE IF NOT EXISTS test01;
复制代码
  1. DROP DATABASE IF EXISTS test01;
复制代码
  1. -- tab键上方有一个``,如果数据库的表名或者字段名是一个特殊字符,就需要添加
  2. USE `test01`;
复制代码
  1. SHOW DATABASES; -- 查看所有数据库
复制代码
2.2 数据库列数据类型

数字

2.3 数据库字段属性(重要)



  1. /*每一个表都必须存在以下五个字段,未来做项目都有用,表示一个记录存在的意义
  2. id 主键
  3. is_delete 伪删除
  4. gmt_create 创建时间
  5. gmt_update 更新时间
  6. */
复制代码
2.4 创建数据库表(重点)
  1. -- 目标:创建一个school数据库
  2. -- 创建学生表(列,字段) 使用SQL语句创建
  3. -- 学号int 登陆密码varchar(20) 姓名 性别varchar(2) 出生日期(datetime) 家庭住址 email
  4. -- 注意点,使用英文(),表的名称和字段尽可能使用``括起来
  5. -- AUTO_INCREMENT 自增
  6. -- 字符串使用单引号括起来;
  7. -- 所有的语句后面加,(英文的),最后一个不用加
  8. -- PRIMARY KEY 主键,一般一个表只有一个唯一的主键
  9. CREATE TABLE IF NOT EXISTS `studentinformation`(
  10.     `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  11.                 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
  12.                 `pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密码',
  13.                 `sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
  14.                 `birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
  15.                 `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
  16.                 `email` VARCHAR(50) DEFAULT NULL COMMENT'电子邮箱',
  17.                 PRIMARY KEY(`id`)
  18. )ENGINE = INNODB DEFAULT CHARSET=utf8
复制代码
格式
  1. CREATE TABLE [IF NOT EXISTS] `表名`(
  2.     `字段名` 列类型 [属性] [索引][注释],
  3.     `字段名` 列类型 [属性] [索引][注释],
  4.     ·······
  5.     `字段名` 列类型 [属性] [索引][注释]
  6. )[表类型][字符集设置][注释]
复制代码
2.5 数据表的类型
  1. -- 关于数据库引擎
  2. /*
  3. INNODB 默认使用~
  4. MYISAM 早些年使用
  5. */
复制代码
MYISAMINNODB事务支持不支持支持数据行锁定(同步)不支持支持外键约束不支持支持全文索引支持不支持表空间大小较小较大,约为前者2倍常规使用操作:
在物理空间的位置
所有的数据库文件都存在data目录下
所以数据库的本质还是文件的存储
Mysql引擎在物理文件上的区别
设置数据库表的字符集编码
  1. CHARSET = utf8
复制代码
也可以采取在数据库安装目录下新建一个ini文件的方式进行默认设置。不如不单独设置,系统会默认为一个latin字符集,我的ini文件格式如下:
  1. #设置3306端口
  2. port=3306
  3. #设置mysql的安装目录   ----------是你的文件路径-------------
  4. basedir=E:\WorkappPackage\Mysql\mysql-8.0.32-winx64
  5. #设置mysql数据库的数据的存放目录  ---------是你的文件路径data文件夹自行创建
  6. #datadir=E:\WorkappPackage\Mysql\mysql-8.0.32-winx64\data
  7. #允许最大连接数
  8. max_connections=200
  9. #允许连接失败的次数。
  10. max_connect_errors=10
  11. #服务端使用的字符集默认为utf8mb4
  12. character-set-server=utf8mb4
  13. #创建新表时将使用的默认存储引擎
  14. default-storage-engine=INNODB
  15. #默认使用“mysql_native_password”插件认证
  16. #mysql_native_password
  17. default_authentication_plugin=mysql_native_password
  18. [mysql]
  19. #设置mysql客户端默认字符集
  20. default-character-set=utf8mb4
  21. [client]
  22. #设置mysql客户端连接服务端时默认使用的端口
  23. port=3306
  24. default-character-set=utf8mb4
复制代码
2.6 修改删除表

修改
  1. -- 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
  2. ALTER TABLE test01 Rename AS test02
  3. -- 增加表的字段:ALTER TABLE 表名 ADD 字段名 列属性
  4. ALTER TABLE test02 ADD age INT(10)
  5. -- 修改表的字段(重命名,修改约束)
  6. -- ALTER TABLE 表名 MODIFY 字段名 列属性[]
  7. ALTER TABLE test02 MODIFY age VARCHAR(10)
  8. -- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[]
  9. ALTER TABLE test01 CHANGE age age1 INT(1) -- 字段重命名
  10. -- 删除表的字段
  11. ALTER TABLE test01 DROP age1
复制代码
删除
  1. -- 删除表(加入判断条件,如果存在再删除)
  2. DROP TABLE IF EXISTS test01
复制代码
03 MySQL数据管理

3.1 数据库级别外键(了解)

方式一:在创建表的时候,增加外键语句和关联语句等约束(比较复杂)
  1. CREATE TABLE IF NOT EXISTS `studentinformation`(
  2.     `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  3.                 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
  4.                 `pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密码',
  5.                 `sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
  6.                 `birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
  7.                 `gradeid` INT(3) NOT NULL COMMENT'年级id',
  8.                 `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
  9.                 `email` VARCHAR(50) DEFAULT NULL COMMENT'电子邮箱',
  10.                 PRIMARY KEY(`id`),
  11.                 KEY `FK_gradeid`(`gradeid`), -- 外键名称设置
  12.                 CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) -- 关联约束设置
  13. )ENGINE = INNODB DEFAULT CHARSET=utf8
  14. CREATE TABLE IF NOT EXISTS `grade`(
  15.     `gradeid` INT(3) NOT NULL COMMENT'年级id',
  16.                 `gradename` VARCHAR(10) NOT NULL COMMENT'年级名称',
  17.                 PRIMARY KEY(`gradeid`)
  18. )ENGINE = INNODB DEFAULT CHARSET=utf8
复制代码

方法二:正如上面所示,可以在外键部分手动添加,这里不做展开,与上面运行结果类似即可
方法三:
  1. CREATE TABLE IF NOT EXISTS `grade`(
  2.     `gradeid` INT(3) NOT NULL COMMENT'年级id',
  3.                 `gradename` VARCHAR(10) NOT NULL COMMENT'年级名称',
  4.                 PRIMARY KEY(`gradeid`)
  5. )ENGINE = INNODB DEFAULT CHARSET=utf8
  6. -- 外部创建外键约束
  7. CREATE TABLE IF NOT EXISTS `studentinformation`(
  8.     `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  9.                 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
  10.                 `pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密码',
  11.                 `sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
  12.                 `birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
  13.                 `gradeid` INT(3) NOT NULL COMMENT'年级id',
  14.                 `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
  15.                 `email` VARCHAR(50) DEFAULT NULL COMMENT'电子邮箱',
  16.                 PRIMARY KEY(`id`)
  17. )ENGINE = INNODB DEFAULT CHARSET=utf8
  18. -- 创建表的时候没有外键关系
  19. -- 外部添加外键约束
  20. ALTER TABLE `studentinformation`
  21. ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
  22. -- 结构
  23. ALTER TABLE 表
  24. ADD CONSTRAINT 约束名 FOREIGN KEY(`作为外键的列`)
复制代码
最佳实践
参考文章:https://www.cnblogs.com/rjzheng/p/9907304.html
3.2 DML语言(需要全部记住)

数据库意义:数据存储、数据管理
DML语言:数据操作语言
3.3 添加INSERT

格式
  1. -- 插入语句(添加)
  2. -- INSERT INTO 表名 (`字段名1`,`字段名2`,`字段名3`) VALUES('第一条数据字段1数据','第一条数据字段2数据','第一条数据字段3数据'),('第二条数据字段1数据','第二条数据字段2数据','第二条数据字段3数据')····
  3. -- 例:
  4. INSERT INTO `grade`(`gradename`)VALUES('大一')
  5. -- 需注意的是,跟在表名后面的括号内容可以选择表中的部分字段,但是需要观察表结构,那些非空且没有默认值的或者没设置自增的字段必须包括在内,否则会报错。还需注意,选定了括号内容后,VALUES后面的括号内的结构需与前面保持一致。如果想一次性添加多条数据,需要在括号中间用“,”隔开。
  6. -- 错误示例:
  7. INSERT INTO `grade` VALUES('大二')
  8. -- 此处在表名`grade`后面没有括号,因此Mysql就会默认格式为全部字段。依照上面所述,数据库会对VALUES后面数据进行匹配。因此会报错。
  9. -- 正确示例:
  10. INSERT INTO `grade` VALUES(2,'大二')
  11. -- 插入多条数据
  12. INSERT INTO `grade`(`gradename`)
  13. VALUES ('大三'),('大四')
复制代码
注意事项:
3.4 修改UPDATE

3.5 删除DELET


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4