mysql语法基础一

本文详细介绍了MySQL的登录、数据库操作、用户权限设置、字段类型、SQL语句分类及常见操作,包括创建、删除数据库,创建用户,数据表的增删改查,以及数据的插入、更新、查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

登录mysql

mysql [-h 连接的主机ip -P端口3306] -u 用户名 -p 密码
前提是连接的主机开启远程访问。如果是本机,可以省略 -h , -P

数据库的操作

  1. 创建数据库test1;
    create database test1;
  2. 删除数据库
    drop database test1;
  3. 创建用户user1;
	grant all privileges on test1.* to user1@'%' identified by '123456';

’%’ 表示user1用户可以在任意ip地址访问test1数据库下的所有对象。
所以*.*表示为所有数据库下的所有对象。
这整句语句可理解为:创建一个user1 用户拥有所有权限,可以在任意ip通过密码’123456’对test1数据库下的所有对象进行操作。
执行完此语句后!!需执行 flush privileges;才能生效

  1. 查询当前所有的数据库
    show databases;
    在这里插入图片描述
  2. 切换数据库
    use test1;

mysql里常见的字段类型

数值类型
int 整数
long 长整型
float 单精度
double 双精度
decimal 小数值 金额字段

字符串类型:
char 定长字符串 0-255字节 abc 存储时会自动补齐到255字节
varchar 变长字符串 0-65535字节 abc

日期和时间类型:
date 日期 YYYY-MM-DD
time 时间 HH:MM:SS
datetime
timestamp

SQL语句的分类:

DDL (数据定义语言)

数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表
create drop alter truncate(清空数据记录)等

DML (数据操纵语言) – 增删改

数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update(更新), insert(插入), delete(删除) 不包含查询

DCL (数据控制语言)

数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant(设置权限),revoke(撤销权限),begin transaction等

DQL (数据查询语言) - 查询

数据查询语言 – Data Query Language
数据表记录的查询。
select。。。

数据表结构的增删改查

1.数据库表的创建

语法:
create table 表名(
列名 类型(长度), ----某一列,存放的数据是什么类型.长度表示允许列名存储数据的最大长度.
列名 类型(长度),

列名 类型(长度)—最后一个列不需要逗号。
);
生产中建表的规范:
1、id自增长
2、createtime createuser updatetime updateuser
3、字段名称不允许用中文 中文的汉语拼音 建字段

create table rzdata(
id int AUTO_INCREMENT primary key,

stu_num  int,
stu_name varchar(100),
stu_age  int,

createtime timestamp default current_timestamp,
createuser  varchar(100),
updatetime timestamp default current_timestamp on update current_timestamp,
updateuser  varchar(100)
);

注意:
1)一个数据表可以存在很多列(字段),每列具有类型和长度。
2)多个列之间使用逗号隔开,最后一个列不需要输入逗号。
3)创建表的时候,一定切换到某一个具体的数据库。
use 数据库名。

单表创建时的约束:

1、主键约束:primary key – 非空 唯一
主键一般表示数据库中的某一列,使用这一列来区分数据表中的数据和其他数据不同。这一列的数据在整个数据表中是不允许重复的,并且不为空。

2、唯一约束:unique
该列(字段)的值不允许重复。可以为null(null不算重复)。
解释:一张表中可以有很多个唯一约束。

3、非空约束,not null。表示该列的内容不允许为空。该字段的值不能为空。

简单数据表内容的增删改

一、insert语句–向数据表插入数据

1.1 方式一: 全写。
语法:insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);
语法:insert into 表名 values (值1,值2,值3…);
注意事项:

1、值与列一一对应。有多少个列,就需要写多少个值。如果某一个列没有值。可以使用null。表示插入空。
2、值的数据类型,与列被定义的数据类型要相匹配。并且值的长度,不能够超过定义的列的长度。
3、字符串:插入字符类型的数据,建议写英文单引号括起来。在mysql中,使用单引号表示字符串。
4、date 时间类型的数据也得使用英文单引号括起来: 如’yyyy-MM-dd’,’yyyy/MM/dd’,’yyyyMMdd’ 。
5、如果主键是自动增长的,可以直接插入数值null。

方式二:省略部分列

insert into 表名(列名,列名,列名。。。。) values(值,值,值。。。。)
注意:
可以省略部分列名。某一列 有默认值,或者允许为空,才可以省略。

主键是自增长的认为是有默认值的。也可以省略
注意:在插入数据的时候,如果某些列可以为null,或者是自动增长的列,或者有默认值的,在插入的时候可以省略。

方式三:省略所有列

insert into 表名 values(值,值,值,值);
1、表中有多少列,就有多个值。
2、按照表的结构,列和值去对应。 desc 表名 得到列的顺序。 从上倒下,对应的值,从左到右插入数据。
注意:如果给表中的所有列插入数据,这时可以省略表名后面的列名,直接写values。
插入语句:
insert into person values(null,‘wangwu’,‘123’,‘nv’,‘1987-8-9’,13000);

二、update语句

语法: update 表名 set 列名=值,列名=值… [ where条件语句 ];
注意事项:

1、如果不加条件语句,将会修改某一列的所有值。
2、一般修改数据时,都需要增加条件。(重点)

数据表记录的查询

语法一:查询数据库中的某张表的所有数据

语法:select * from 表名;

表示查询表的所有信息。会把表的所有的列,所有的行都列出来。
说明:
1)select 表示选择的意思;
2)* 表示所有的数据;
3)from 表示从哪个表中选择;

语法二: 查询某张表中指定的列

语法: select 列名,列名… from 表名;

说明:显示指定列数据。列出所有行信息。
需求:查询所有学生的姓名和成绩。

语法三:按条件查询

语法:select 列名,列名… from 表名 where 条件;
and 交集
or 合集

select * from ruozedata.rzdata;
select id,stu_name from ruozedata.rzdata where stu_age=18;
select * from ruozedata.rzdata where stu_age=18 and  stu_name='jepson';
select * from ruozedata.rzdata where stu_age=24 or  stu_name='jepson';
select * from ruozedata.rzdata where stu_age=24 and (stu_num=110 and stu_name='jepson')
(stu_num=110 and stu_name='jepson'): 第1行
stu_age=24 : 第3行

select * from ruozedata.rzdata where stu_age=24 or (stu_num=110 and stu_name='jepson')

select * from ruozedata.rzdata where stu_age>18;

说明:查找符合where条件的数据。
作用:过滤,只有符合条件的,才去列出相应的信息。

语法四 :对查询的结果进行排序:

使用order by 子句排序查询结果。
语法:select * from 表名 order by 列名1 asc|desc,列名2(asc|desc),列名3(asc|desc) 。。。。。;
按照列名1,列名2,列名3 进行排序输出。
asc是升序排列,desc是降序排列。默认是asc升序。

按照第一列进行排序,如果第一列相同,按照第二列在进行排序。

语法五:limit的用法

作用 : 限制查询结果返回的数量。-- 查询数据库中的一部分数据

语法:select * from 表名 limit offset, row_count;

mysql中limit的用法:返回前几条或者中间某几行数据
select * from 表名limit 1,4。
1表示索引,注意这里的索引从0开始。
4表示查询记录数。
上述就表示从第2条记录开始查询,一共查询4条,即到第5条。

语法六:#模糊查询 like 基本用法
select * from ruozedata.rzdata ;
select * from ruozedata.rzdata where stu_name like '%n%';
select * from ruozedata.rzdata where stu_name like 'j%';
select * from ruozedata.rzdata where stu_name like '%u';
select * from ruozedata.rzdata where stu_name like '__s%'; #占位符_  第三个字母s(总共三个字母)

1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’
若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE ‘
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE ‘三__’;
只找出“三脚猫”这样name为三个字且第一个字是“三”的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值