MySQL数据库 #2

一、针对记录的SQL语句

记录:表中的一行行的数据称之为是一条记录
必须是先有库、再有表、最后有操作记录

id     name     age     gender
1      jack     18      male
# 这就是表里的数据

1. 增加数据

insert into t1 values(1, 'jack', 20, 'male');   第一种方法,全字段增加,单挑增加

insert into t1 values(2,'jack',18,'male'),(3,'jack',11,'male'),(4,'jack',13,'male'),(5,'jack',55,'male');  第二种方法,全字段增加,批量增加

insert into t1(id,name) values(6,'jack');  第三种方法,指定字段增加,空的使用NULL填充


+------+------+------+--------+
| id   | name | age  | gender |
+------+------+------+--------+
|    1 | jack |   20 | male   |
|    2 | jack |   18 | male   |
|    3 | jack |   11 | male   |
|    4 | jack |   13 | male   |
|    5 | jack |   55 | male   |
|    6 | jack | NULL | NULL   |
+------+------+------+--------+

2. 查看记录

select * from 表名; 查看所有

select * from t1;

+------+------+------+--------+
| id   | name | age  | gender |
+------+------+------+--------+
|    1 | jack |   20 | male   |
|    2 | jack |   18 | male   |
|    3 | jack |   11 | male   |
|    4 | jack |   13 | male   |
|    5 | jack |   55 | male   |
|    6 | jack | NULL | NULL   |
+------+------+------+--------+

3.修改

update t1 set name='xiaozhang' where id=1;  这是修改id1的name,必须要有where条件语,条件语要写在修改数据的后面


update t1 set age=18 where name='xiaozhang';  这是修改name为'xiaozhang'的age,必须要有where条件语,条件语要写在修改数据后前面

update t1 set name='xiaowang' where name='xiaozhang' and age=18;  修改name为'xiaozhang'和,age为18的name,必须要连个条件成立才修改

update t1 set name='xiaowang' where age=55 or age=13; 修改age为55或age为13的name

update t1 set name='xiaozhang';  这是修改所有name

以后再自行更新和删除的sql语句的时候,一定要细心、好好看看你的条件是否正确,否则会发生所有的数据都会改变

4.删除

delete from t1 where id=1;
delete from t1 where id=2 or id=6;
delete from t1;   这是清空表

二、配置文件的使用

mysql的配置文件是:my-default.ini,一般在根目录下

首先将原来的配置文件my-default.ini复制一份,重命名为my.ini,然后用记事本打开,将里面的内容全部删掉,添加以下内容。

修改MySQL的编码为utf8:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

修改了配置文件,一定别忘了重启服务端才能生效

三、存储引擎使用(理论,重要)

存储引擎就是存储数据的方式!

MySQL支持多少种存储引擎方式
1.如何查看存储引擎

show engines;

一共九种存储引擎,重点学习:MyISAM、MEMORY、InnoDB

MyISAM:
它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎
“”“不支持事务、支持的是表锁”“”

InnoDB:
它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些
“”“它支持:事务、行锁、外键”“”

MEMORY:
它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失

演示

create table t2 (id int, name varchar(64)) engine=MyISAM;
create table t3 (id int, name varchar(64)) engine=InnoDB;
create table t4 (id int, name varchar(64)) engine=MEMORY;

对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
.frm 存储表结构
.MYD 存储的是表数据
.MYI 存索引(当成是字典的目录,加快查询速度)

InnoDB:2个文件
.frm 存储表结构
.ibd 存储数据和索引

MEMORY:1个文件
.frm 存储表结构

四、数据类型(重要)

1.整型:存储整数的

tinyint、smallint、int、bigint

不同的数据类型区别就是所存储的范围不一样

tinyint: 它是使用一个字节来保存数据,一个字节代表811111111--->256种情况(0-255) (-128-127)

smallint:2个字节, 代表16, 65536(0-65535) (-32768-32767)

mediumint: 3个字节

int: 4个字节,2**32=42....(-21...- 21...)

bigint:8个字节(最大的) 可以存手机号(11)

怎么选数据类型:看你这一列存需要什么数据

整型默认情况下都是带符号的减半
create table t2(id tinyint);
insert into t2 values(256);

+------+
| id   |
+------+
|  127 |
+------+
怎么样去除符号

在添加表的时候,加上 unsigned

create table t3 (id tinyint unsigned);

+------+
| id   |
+------+
|  255 |
+------+

2.浮点型

float、doble、decimal

float(255,30) 总位数是255位,小数点后30位

double(255,30) 总数位是255位,小数点后30位

decimal(65,30) 总位数是65为,小数点后30位

它们三个有什么区别呢
create table t7 (id float(255, 30));
create table t8 (id double(255, 30));
create table t9 (id decimal(65, 30));


create table t4 (id float(255, 30));
create table t5 (id double(255, 30));
create table t6 (id decimal(65, 30));



+----------------------------------+----------------------------------+----------------------------------+
| id                               | id                               | id                               |
+----------------------------------+----------------------------------+----------------------------------+
| 1.111111164093017600000000000000 | 1.111111111111111200000000000000 | 1.111111111111111111111111110000 |
+----------------------------------+----------------------------------+----------------------------------+
结论:

三者的精确度不一样:decimal >>> double >>> float(精确到7位了),所以大多数都会选择decimal

3.字符串

char(4):定长类型,超出4位不显示,不够4位,使用空格填充

varchar(4): 可变长类型,超出4位不显示,不够4位的,有几位存几位

create table t7 (id int, name char(4));
create table t8 (id int, name varchar(4));

insert into t7 values(1, 'xiaozhang');
insert into t8 values(1, 'xiaozhang');

+------+------+
| id   | name |
+------+------+
|    1 | xiao |
+------+------+
设置严格模式

命令模式:临时修改
set global sql_mode=‘STRICT_TRANS_TABLES’; 不区分大小写

配置文件修改:永久修改

研究定长和不定长
create table t9 (id int, name char(4));
create table t10 (id int, name varchar(4));

insert into t9 values(1, 'ja');
insert into t10 values(1, 'ja');

验证是否补充了空格

select char_length(name) from t9;
select char_length(name) from t10;

默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式

命令模式:临时修改

set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写

配置文件修改:永久修改

4. 日期

date   		datetime  		time   		year
年月日  	   年月日 十分秒  	十分秒  		年
create table t11(id int, time1 date, time2 datetime, time3 time, time4 year);

insert into t11 values(1,'2023-10-23','2023-10-1  11:11:11', '11:11:11', 2023);



+------+------------+---------------------+----------+-------+
| id   | time1      | time2               | time3    | time4 |
+------+------------+---------------------+----------+-------+
|    1 | 2023-10-23 | 2023-10-01 11:11:11 | 11:11:11 |  2023 |
+------+------------+---------------------+----------+-------+

5.枚举

多选一

enum

create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));
在添加数据的时候,bobby的参数必须是'read', 'music', 'tangtou', 'xijio'这四个当中的一个

insert into t15 values(1, 'read');
多选多(包含多选一)

set

create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));
在添加数据的时候,bobby的参数必须是'read', 'music', 'tangtou', 'xijio'这四个当中,多个也可以

insert into t16 values(2, 'read,music1');这个就会在四个参数中找到正确的那一个
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值