当前位置:Gxlcms > 数据库问题 > mysql基础(附具体操作代码)

mysql基础(附具体操作代码)

时间:2021-07-01 10:21:17 帮助过:12人阅读

-- 注释内容 -- 创建数据库 king CREATE DATABASE king; -- 查看当前服务器下有哪些数据库 SHOW DATABASES; SHOW SCHEMAS; -- 查看king数据库的详细信息 SHOW CREATE DATABASE king; -- 创建数据库queen 并且指定编码方式为gbk CREATE DATABASE IF NOT EXISTS queen DEFAULT CHARACTER SET ‘GBK‘; -- 查看当前服务器下全部的数据库 SHOW DATABASES; -- 查看queen指定数据库的详细信息 SHOW CREATE DATABASE queen; -- 将queen的数据库的编码方式改为utf8 ALTER DATABASE queen DEFAULT CHARACTER SET ‘UTF8‘; -- 打开queen的数据库 USE queen; -- 得到当前打开的数据库 SELECT DATABASE(); SELECT SCHEMA(); -- 删除king数据库 DROP DATABASE IF EXISTS king; DROP DATABASE IF EXISTS queen;
-- 创建测试用数据库 test
CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET ‘UTF8‘;

-- 打开test

USE test;

-- 用户表 test_user

CREATE TABLE IF NOT EXISTS test_user(
id INT,
username VARCHAR(20),
password CHAR(32),
email VARCHAR(50),
age TINYINT,
card CHAR(18),
tel CHAR(11),
salary FLOAT(8,2),
married TINYINT(1),
addr VARCHAR(100),
sex ENUM(‘男‘,‘女‘,‘保密‘)
)ENGINE=INNODB CHARSET=UTF8;

-- 查看test_user表的表结构
DESC test_user;

DESCRIBE test_user;

SHOW COLUMNS FROM test_user;

-- 删除test_user表

DROP TABLE IF EXISTS test_user;

-- 查看当前数据库下的数据表

-- 查看test_user表的详细信息

-- 通过三种方式查看指定数据表的表结构

-- 最后删除test_user数据表

数据库增加数据与查询数据

-- 用户表 test_user

CREATE TABLE IF NOT EXISTS test_user(
id INT,
username VARCHAR(20),
password CHAR(32),
email VARCHAR(50),
age TINYINT,
card CHAR(18),
tel CHAR(11),
salary FLOAT(8,2),
married TINYINT(1),
addr VARCHAR(100),
sex ENUM(‘男‘,‘女‘,‘保密‘)
)ENGINE=INNODB CHARSET=UTF8;

-- INSERT [INTO] tbl_name(id,username,...) VALUES(1,‘KING‘,...);

-- 向test_user表插入一条记录
INSERT test_user(id,username,password,email,age,card,tel,salary,married,addr,sex)
VALUES(1,‘king‘,‘king‘,‘965794175@qq.com‘,24,‘xxxxxxxxxxxxxxxxxx‘,‘132xxxxxxxx‘,88888.68,0,‘宁波‘,‘男‘);

-- 查询表中所有记录 SELECT * FROM tbl_name;

SELECT * FROM test_user;

INSERT test_user(id,username,password,email,age,card,tel,salary,married,addr,sex)

VALUES(-5,‘king‘,‘123456‘,‘965794175@qq.com‘,190,‘xxxxxxxxxxxxxxxxxx‘,‘132xxxxxxxx‘,2345.68,1,‘宁波‘,‘女‘);

数据类型测试-测试整型+无符号+零填充

-- 测试整型
CREATE TABLE test_int(
    a tinyint,
    b smallint,
    c mediumint,
    d int,
    e bigint
);
INSERT test_int(a) VALUES(-128);
-- 如果超出数据的范围,会产生截断现象
INSERT test_int(a) VALUES(-129);
INSERT test_int(a) VALUES(1270);

-- 测试无符号

CREATE TABLE test_unsigned(
a tinyint,
b tinyint UNSIGNED
);

INSERT test_unsigned(a,b) VALUES(-12,-12);
INSERT test_unsigned(a,b) VALUES(0,0);
INSERT test_unsigned(a,b) VALUES(0,256);

-- 测试零填充 ZEROFILL
CREATE TABLE test_int1(
    a tinyint ZEROFILL,
    b smallint ZEROFILL,
    c mediumint ZEROFILL,
    d int ZEROFILL,
    e bigint ZEROFILL
);

INSERT test_int1(a,b,c,d,e) VALUES(1,1,1,1,1);

CREATE TABLE test_int2(
    a tinyint(2),
    b smallint(2)
);
INSERT test_int2(a,b) VALUES(123,45678);

数据类型测试-测试浮点型

-- 测试浮点型
CREATE TABLE test_float(
a FLOAT(6,2),
b DOUBLE(6,2),
c DECIMAL(6,2)
);

INSERT test_float(a,b,c) VALUES(4.143,4.146,4.149);

CREATE TABLE test_float1(
a FLOAT,
b DOUBLE,
c DECIMAL
);
INSERT test_float1(a,b,c) VALUES(4.143,4.146,4.649);
INSERT test_float(a,b,c) VALUES(1234567.89,2345678.9,567890.89);

数据类型测试-测试char和varchar+text+ENUM+set

-- 测试char 和 varchar
CREATE TABLE test_str(
    a CHAR(5),
    b VARCHAR(5)
);
INSERT test_str(a,b) VALUES(‘‘,‘‘);
INSERT test_str(a,b) VALUES(‘a‘,‘a‘);
INSERT test_str(a,b) VALUES(‘ab‘,‘ab‘);
INSERT test_str(a,b) VALUES(‘abc‘,‘abc‘);
INSERT test_str(a,b) VALUES(‘abcd‘,‘abcd‘);
INSERT test_str(a,b) VALUES(‘abcde‘,‘abcde‘);
INSERT test_str(a,b) VALUES(‘abcdef‘,‘abcdef‘);

INSERT test_str(a,b) VALUES(‘ 123 ‘,‘ 123 ‘);

SELECT CONCAT(‘*‘,a,‘*‘),CONCAT(‘*‘,b,‘*‘) FROM test_str;

-- 测试TEXT不能有默认值
CREATE TABLE test_str1(
 content TEXT DEFAULT ‘THIS IS A TEST‘
);


-- 测试ENUM
CREATE TABLE test_enum1(
sex ENUM(‘男‘,‘女 ‘,‘保密 ‘)
);
INSERT test_enum(sex) VALUES(‘男‘);
INSERT test_enum(sex) VALUES(‘男1‘);
INSERT test_enum(sex) VALUES(NULL);
INSERT test_enum(sex) VALUES(1);
INSERT test_enum(sex) VALUES(3);
INSERT test_enum(sex) VALUES(5);

-- 测试SET
CREATE TABLE test_set(
    a SET(‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘)
);

INSERT test_set(a) VALUES(‘A‘);
INSERT test_set(a) VALUES(‘C‘);
INSERT test_set(a) VALUES(‘C,D,E‘);
INSERT test_set(a) VALUES(‘C,F,A‘);
INSERT test_set(a) VALUES(‘C,F,A,H‘);
INSERT test_set(a) VALUES(2);

数据类型测试-测试时间类型

-- HH:MM:SS [D HH:MM:SS] D表示天数 0~34
-- 测试TIME类型
CREATE TABLE test_time(
a TIME
);
INSERT test_time(a) VALUES(‘12:23:45‘);
INSERT test_time(a) VALUES(‘2 12:23:45‘);
INSERT test_time(a) VALUES(‘22:22‘);
INSERT test_time(a) VALUES(‘22‘);
INSERT test_time(a) VALUES(‘2 22‘);
-- HHMMSS
INSERT test_time(a) VALUES(‘121212‘);
INSERT test_time(a) VALUES(‘0‘);
INSERT test_time(a) VALUES(0);
INSERT test_time(a) VALUES(‘787878‘);

INSERT test_time(a) VALUES(NOW());
INSERT test_time(a) VALUES(CURRENT_TIME);

-- 测试DATE类型 YYYY-MM-DD YYYYMMDD
CREATE TABLE test_date(
    a DATE
);
INSERT test_date(a) VALUES(‘2017-03-04‘);
INSERT test_date(a) VALUES(‘2017-2-13‘);
INSERT test_date(a) VALUES(‘4007-03-23‘);
INSERT test_date(a) VALUES(‘40071212‘);
INSERT test_date(a) VALUES(‘4007@12@12‘);
INSERT test_date(a) VALUES(‘4008#13#13‘);
INSERT test_date(a) VALUES(‘4009.8.14‘);


-- YY-MM-DD YYMMDD
-- 70~99 转换成1970~1999 00~69 2000~2069
INSERT test_date(a) VALUES(‘780902‘);
INSERT test_date(a) VALUES(‘650902‘);
INSERT test_date(a) VALUES(‘880902‘);
INSERT test_date(a) VALUES(NOW());
INSERT test_date(a) VALUES(CURRENT_DATE);

-- 测试DATETIME

CREATE TABLE test_datetime(
a DATETIME
);
INSERT test_datetime(a) VALUES(‘1004-09-12 13:24:56‘);
INSERT test_datetime(a) VALUES(‘720305121212‘);
INSERT test_datetime(a) VALUES(NOW());
INSERT test_datetime(a) VALUES(DATETIME);

-- 测试TIMESTAMP
CREATE TABLE test_timestamp(
    a TIMESTAMP
);
INSERT test_timestamp(a) VALUES(‘1978-10-23 12:12:12‘);

-- 插入CURRENT_TIMESTAMP
INSERT test_timestamp VALUES(CURRENT_TIMESTAMP);

-- 插入NULL
INSERT test_timestamp VALUES(NULL);

-- 什么也不写 得到当前系统日期和时间
INSERT test_timestamp VALUES();


-- 测试YEAR

CREATE TABLE test_year(
    a YEAR
);

INSERT test_year(a) VALUES(1901);

-- 00~69 2000~2069 70~99 1970~1999
-- 0 插入的结果是0000
-- ‘0‘ 插入的结果是2000

数据类型测试-测试主键+复合主键+自增

-- 测试主键
CREATE TABLE test_primary_key(
    id INT UNSIGNED PRIMARY KEY,
    username VARCHAR(20)
);
INSERT test_primary_key(id,username) VALUES(1,‘king‘);
INSERT test_primary_key(id,username) VALUES(1,‘king123‘);
INSERT test_primary_key(username) VALUES(‘QUEEN‘);

CREATE TABLE test_primary_key1(
    id INT UNSIGNED KEY,
    username VARCHAR(20)
);

CREATE TABLE test_primary_key2(
    id INT UNSIGNED,
    username VARCHAR(20),
    PRIMARY KEY(id)
);

-- CREATE TABLE test_primary_key3(
--     id INT UNSIGNED PRIMARY KEY,
--     courseId INT UNSIGNED PRIMARY KEY,
--     username VARCHAR(20),
--     email VARCHAR(50)
-- );

-- 复合主键
CREATE TABLE test_primary_key3(
    id INT UNSIGNED,
    courseId VARCHAR(20),
    username VARCHAR(20),
    email VARCHAR(50),
    PRIMARY KEY(id,courseId)
);
-- 1-a
INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,‘a‘,‘king‘,‘965794175@qq.com‘);

INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,‘b‘,‘king‘,‘965794175@qq.com‘);

INSERT test_primary_key3(id,courseId,username,email)
VALUES(2,‘a‘,‘king‘,‘965794175@qq.com‘);

INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,‘a‘,‘1king‘,‘965794175@qq.com‘);

-- 测试AUTO_INCREMENT

CREATE TABLE test_auto_increment(
id INT UNSIGNED KEY AUTO_INCREMENT,
username VARCHAR(20)
);

INSERT test_auto_increment(username) VALUES(‘A‘);
INSERT test_auto_increment(username) VALUES(‘B‘);
INSERT test_auto_increment(username) VALUES(‘C‘);

INSERT test_auto_increment(id,username) VALUES(NULL,‘E‘);
INSERT test_auto_increment(id,username) VALUES(DEFAULT,‘F‘);
INSERT test_auto_increment(id,username) VALUES(15,‘G‘);

数据类型测试-测试非空+默认值+唯一键

-- 测试非空
CREATE TABLE test_not_null(
a varchar(20),
b varchar(20) not null
);

INSERT test_not_null(a,b) VALUES(‘‘,‘‘);
INSERT test_not_null(a,b) VALUES(NULL,NULL);
INSERT test_not_null(a,b) VALUES(NULL,‘abc‘);
INSERT test_not_null(a) VALUES(‘TEST‘);

-- 测试默认值
CREATE TABLE test_default(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED DEFAULT 18,
email VARCHAR(50) NOT NULL DEFAULT ‘965794175@qq.com‘
);
INSERT test_default(username) VALUES(‘A‘);
INSERT test_default(username,age,email) VALUES(‘B‘,30,‘965794175@qq.com‘);
INSERT test_default(username,age,email) VALUES(‘C‘,NULL,‘965794175@qq.com‘);
INSERT test_default(username,age,email) VALUES(‘D‘,NULL,NULL);
INSERT test_default(username,age,email) VALUES(‘D‘,NULL,DEFAULT);

CREATE TABLE test_default1(
id INT UNSIGNED AUTO_INCREMENT KEY,
sex ENUM(‘a‘,‘b‘,‘c‘) NOT NULL DEFAULT ‘a‘
);

-- 测试UNIQUE KEY
CREATE TABLE test_unique(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
email VARCHAR(50) UNIQUE,
card CHAR(18) UNIQUE
);

INSERT test_unique(username,email,card) VALUES(‘A‘,‘A@QQ.COM‘,‘1‘);
INSERT test_unique(username,email,card) VALUES(‘A‘,‘1A@QQ.COM‘,‘12‘);
INSERT test_unique(username,email,card) VALUES(‘B‘,NULL,NULL);
INSERT test_unique(username,email,card) VALUES(‘C‘,NULL,NULL);

数据类型测试-测试布尔类型

-- 用户表test_user
CREATE TABLE IF NOT EXISTS `test_user`(
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT ‘用户编号‘,
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT ‘用户名‘,
`password` CHAR(32) NOT NULL COMMENT ‘密码‘,
`email` VARCHAR(50) NOT NULL UNIQUE COMMENT ‘邮箱‘,
`age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT ‘年龄‘,
`sex` ENUM(‘男‘,‘女‘,‘保密‘) NOT NULL DEFAULT ‘保密‘ COMMENT ‘性别‘,
`tel` CHAR(11) NOT NULL UNIQUE COMMENT ‘电话‘,
`addr` VARCHAR(50) NOT NULL DEFAULT ‘北京‘ COMMENT ‘地址‘,
`card` CHAR(18) NOT NULL UNIQUE COMMENT ‘身份证号‘,
`married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT ‘0代表未结婚,1代表已结婚‘,
`salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT ‘薪水‘
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

-- 测试布尔类型
CREATE TABLE test_bool(
id int,
married BOOL
);
CREATE TABLE test_bool1(
id int,
married BOOLEAN
);

对数据表字段的增删改

-- 测试添加和删除字段
CREATE TABLE IF NOT EXISTS user1(
    id INT UNSIGNED AUTO_INCREMENT KEY
);

-- 添加用户名字段 username VARCHAR(20)
ALTER TABLE user1
ADD username VARCHAR(20);

-- 添加密码字段 password CHAR(32) NOT NULL
ALTER TABLE user1
ADD password CHAR(32) NOT NULL;

-- 添加邮箱字段 email VARCHAR(50) NOT NULL UNIQUE 加到username之后
ALTER TABLE user1
ADD email VARCHAR(50) NOT NULL UNIQUE AFTER username;

-- 添加测试字段 test TINYINT(1) NOT NUL                    

人气教程排行