(13)mysql基础语法

数据类型

  1. *整数类型*(Integer Types)
    • TINYINT:范围为-128到127或0到255(无符号),用于存储较小的整数值,如存储性别或状态信息。
    • SMALLINT:范围为-32768到32767或0到65535(无符号),用于存储较小的整数值,如存储年龄或计数值。
    • MEDIUMINT:范围为-8388608到8388607或0到16777215(无符号),适用于中等大小的整数值存储。
    • INT:范围为-2147483648到2147483647或0到4294967295(无符号),适用于一般整数值存储。
    • BIGINT:范围为-9223372036854775808到9223372036854775807或0到18446744073709551615(无符号),用于存储大整数值,如存储ID或计数值。
  2. *浮点数类型*(Floating-Point Types):
    • FLOAT:用于存储单精度浮点数,约占用4个字节的空间。
    • DOUBLE:用于存储双精度浮点数,约占用8个字节的空间。
    • DECIMAL:用于精确的十进制数值存储,适用于货币或其他需要精确计算的场景。
  3. *日期与时间类型*(Date and Time Types):
    • DATE:用于存储日期,格式为’YYYY-MM-DD’,如’2023-11-13’。
    • TIME:用于存储时间,格式为’HH:MM:SS’,如’12:30:00’。
    • DATETIME:用于存储日期和时间,格式为’YYYY-MM-DD HH:MM:SS’,如’2023-11-13 12:30:00’。
  4. *字符串类型*(String Types):
    • CHAR:用于存储固定长度的字符串,如CHAR(10)可以存储长度为10的字符串。
    • VARCHAR:用于存储可变长度的字符串,如VARCHAR(255)可以存储长度最大为255的字符串。
    • TEXT:用于存储较长的文本数据,例如文章内容或备注信息。
  5. *枚举和集合类型*
    • 枚举(ENUM)类型: 枚举类型允许您从一组预定义的选项中选择一个单独的值。在创建表结构时,你可以指定枚举类型的字段允许的值列表
    • 集合(SET)类型: 集合类型允许您从一组预定义的选项中选择多个值,这些值之间使用逗号分隔。与枚举类型不同,集合类型允许您选择多个选项,而不仅限于一项。
  6. *其他类型*
    • BOOLEAN:在MySQL中没有专门的BOOLEAN类型,通常使用TINYINT(1)来表示布尔值,0表示false,1表示true。

存储引擎

MEMORY、MyISAM、InnoDB、ARCHIVE

-- 查看数据库的引擎
SHOW ENGINES
-- 查看默认的存储引擎
show variables like '%storage_engine%'
-- 更改默认引擎
SET DEFAULT_STORAGE_ENGINE=MyISAM;
-- 查看该数据库下所有表的引擎
show table status;
-- 查看某个表的引擎!
show create table altertable;
-- 更改表的引擎
ALTER TABLE 表名 ENGINE = 存储引擎名称;

创建数据库

CREATE DATABASE mydatabase
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;
CREATE DATABASE IF NOT EXISTS mydatabase;

删除数据库

DROP DATABASE <database_name>;        -- 直接删除数据库,不检查是否存在DROP DATABASE [IF EXISTS] <database_name>

选择数据库

USE database_name;

创建数据表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    birthdate DATE,
    is_active BOOLEAN DEFAULT TRUE
);

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8mb4_general_ci;;

约束

主键约束

添加单列主键

create table emp1(
	eid int primary key, --创建主键
	name varchar(20),
	deptId int,
	salary double
)

添加多列联合主键

-- 联合主键
-- 所谓的联合主键,就是这个主键是由一张表中的多个字段组成的
-- primary key(字段1,字段3,字段n)
create table emp3(
	name varchar(20),
	deptId int,
	salary double,
	primary key(name,deptId)
);

自增长约束

特点

1.默认情况下,auto_increment的初始值是1,每新增一条记录,字段值都自动加1

2.一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以避免序号重复

3.auto_increment约束的字段必须具备NOT NULL 属性

4.auto_increment约束的字段只能是整数型

5.auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_incremnt就会失效

添加自增长约束

create table emp1(
	eid int primary key auto_increment, 
	name varchar(20)
);

指定自增长字段的初始值

-- 自增长约束
-- 方式一:创建表时指定 指定eid从100开始增长
create table emp1(
	eid int primary key auto_increment, 
	name varchar(20)
)auto_increment = 100;
-- 方式二:创建表之后指定
alter table emp1 auto_increment =200;

非空约束

添非空约束加

-- 方式1:创建表时指定
create table user (
    id int,
    name varchar(20) not null
);
-- 方式2:创建表之后指定
alter table user modify name varchar(20) not null;

唯一约束

-- 方式一:创建表时指定
create table user(
    id int,
    name varchar(20) unique -- 指定唯一约束
)
-- 方式二:创建表之后指定
alter table user add constraint unique_name unique(name);

默认约束

-- 方式一:创建表时指定
create table user(
    id int,
    address varchar(20) default '北京' -- 指定默认约束
);
-- 方式二:创建表之后指定
alter table user modify address varchar(20) default '天津';

外键约束

-- 方式一:创建表时穿件外键约束
create table if not exists emp(
    eid varchar(20) primary key,
    ename varchar(20),
    age int,
    dept_id varchar(20),
    constraint emp_fk foreign key (dept_id) references dept (deptno) -- 外键约束
)
-- 方式二:添加外键约束
alter table emp2 add constraint dept_id_fk foreign key (dept_id)references dept2(deptno);

CHECK约束

CREATE TABLE IF	NOT EXISTS tb_student (
        studentNo INT ( 10 ) ,
        studentName VARCHAR ( 20 ) ,
        sex CHAR ( 2 ) CHECK ( sex='男' OR sex='女' ),
        birthday date,
        native VARCHAR ( 20 ),
        nation VARCHAR ( 10 ) ,
        classNo CHAR ( 6 ) 
) ;

零填充约束

插入数据时,当该字段的值长度小于定义的长度时,会在该值前面补上相应的0

create table user(
    id int zerofill, -- 添加零填充约束
    name varchar(20)
);

insert语句

INSERT INTO users (username, email, birthdate, is_active)
VALUES
    ('test1', 'test1@runoob.com', '1985-07-10', true),
    ('test2', 'test2@runoob.com', '1988-11-25', false),
    ('test3', 'test3@runoob.com', '1993-05-03', true);

select语句

-- 选择所有列的所有行
SELECT * FROM users;

-- 选择特定列的所有行
SELECT username, email FROM users;

-- 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;

-- 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;

-- 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;

-- 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;

update语句

UPDATE orders
SET status = 'Shipped', ship_date = '2023-03-01'
WHERE order_id = 1001;

delete语句

DELETE FROM students
WHERE graduation_year = 2021;

alter语句

查看表结构

show columns from testalter;

删除/添加/修改字段名

-- 删除字段
alter table testalter drop i;
-- 新增字段
alter table testalter add i int 
-- 添加到第一列
alter table testalter add i int first; 
-- 添加到某一字段后面!
alter table testalter add  x int i; 

修改字段类型及名称

-- 修改字段类型
alter table testalter modify i bigint;
-- 修改字段名及类型
alter table testalter change i j varchar(1);

修改null值和默认值

-- 我们可以通过alter modify 修改字段是否为null或者默认值!
alter table testalter modify c varchar(100) not null default "未知";

修改表名

-- 修改表名
alter table testalter rename to altertable;

修改table存储引擎

-- 修改数据库表存储引擎
alter table altertable engine = myisam;

-- 查看该数据库下所有表的引擎
show table status;
-- 查看某个表的引擎!
show create table altertable;

修改主键/外键约束

-- 添加主键
alter table tab_name add primary key(field);
-- 修改主键
alter table tab_name modify field int primary key;
-- 删除名为pk_name主键!
alter table tab_name drop primary key pk_name;

-- 删除外键约束
alter table  tab_name drop foregin key fk_name;
-- 添加外键约束 给field 字段设置为外键 关联 x表的i主键 约束名为 fk_name 
alter table tab_name add constraint fk_name foregin key(field) references x(i);

修改字段相对位置

-- 修改字段相对位置
alter table altertable modify x int(11) first/ after j;

设置字段default/uique

-- 设置默认值
alter table tab_name field set default '默认值';
-- 删除默认值
alter table tab_name field drop default; 

-- 设置唯一约束
alter table tab_name add constraint uq_name unique(field);
-- 删除唯一约束
alter table tab_name drop index uq_name;

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值