Mysql

87 阅读3分钟

-- 单行注释

/*

多行注释

*/

-- 查看Mysql的版本号 ctrl+r 选中sql语句
SELECT version();

命令行登录mysql

注意:如果连接的是本地数据库,-h可以省略不写

mysql -h ip地址 -P 端口 -u 用户名 -p 数据库名称

简写:mysql -u root -p 回车

SQL(Structured Query Language)结构化查询语言

定义:用于程序员和DBMS进行交互的语言

分类:

DDL(数据定义语言)

用于创建和删除数据库对象等操作 CREATE DROP ALTER

注意:不支持事务回滚的

DML(数据操作语言)(重要)

包含DQL 用来操作数据库中所包含的数据INSERT DELETE UPDATE SELECT

TCL(事务控制语言)

对数据库中事务进行操作 COMMIT ROLLBACK SAVEPOINT

DCL(数据控制语言)

用来控制数据库组件的存取许可、存取权限等 GRANT REVOKE

-- 创建数据库   create database 数据库名 default character set 字符集  collate 排序规则
create database db1 default character set utf8mb4 collate utf8mb4_general_ci; 
-- 删除数据库   drop database 数据库名    
drop database db1;
-- 查看当下登录用户可以访问的数据库有哪些  show databases;  
show databases;
-- 查看数据库的创建语句 show create database 数据库名字
show create database db1;
-- 选中要操作的数据库  use 数据库名
use db1;

mysql的数据类型

  1. 数值类型(整数小数)

tinyint(m)1个字节 -128-127之间 smallint(m) mediumint(m) int(m) bigint(m)

int(3) int(11) 没有区别的 只有联合zerofill的参数有意义,和区别

float(m,d) double(m,d) decimal(m,d)

涉及金额的存储禁止用float和double 要用decimal

  1. 日期类型

data time year datetime timestamp(常用)

  1. 字符串类型 不区分单双引号 '' ""都可以表示字符串

char(n) :定长字符串 类似java数组

varchar(n): 变长字符串 类似java集合

注意:n表示字节数 一个中文4-8个字节 1个字母1个字节

char(10) 不管你用不用,都在内存开辟一个长度为10的字节空间 效率高 占空间

varchar(10) 你用就占字节,不用就不占字节,10表示最大可占字节数 效率低 省空间

分别什么时候使用???

存中国人名字(4个字)的时候用 char(20)

预判到最大值的时候,而且不会太长就用char,因为速度快

存博客名字 char

存博客备注 varchar

text blob 可以存大型的文本数据

  1. 枚举类型 后面讲

  2. 集合类型 后面讲

常用的数据类型:

tinyint int

double decimal

date:yyyy-mm-dd 2024-07-22

time: HH:MM:ss

timestamp yyyy-mm-dd HH:MM:ss

char varchar text

DDL(数据定义语言)

了解 知道就可以

用于创建和删除数据库对象等操作

数据库对象:数据库、表、视图、存过、索引等

关键字:CREATE DROP ALTER

注意:不支持事务回滚的,就是操作后,不能返回。

-- 创建表:create table 表名(字段名 数据类型 comment 注释,字段名 数据类型.....)
create table student_info(
  name char(10) comment "姓名",
  age int comment "年龄"
) comment "学生表";
-- 查看当前用户下面所使用的数据库里面有多少张表  show tables;
show tables;
-- 查看表的建表语句 show create table 表名
show create table student_info;
-- 查看表结构 desc 表名
desc student_info;
-- 删除表 drop table 表名  & drop table if exists 表名
drop table if exists student_info;
-- 所以一般建表的时候,会先删除,再创建
-- 在数据库里面所有数据类型的默认值是都是null
drop table if exists student_info;
CREATE TABLE `student_info` (
  `name` char(10) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';