Mysql基础、操作、查询

本文详细介绍Mysql数据库的安装、配置及基本操作,包括数据表、字段、记录的概念,SQL语言的使用,数据库的创建、查询、更新、删除等操作,以及时间类型和高级查询语句的运用。

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

Mysql官网

www.mysql.com

Mysql安装

Ubuntu安装

  • 安装服务端:sudo apt-get install mysql-server
  • 安装客户端:sudo apt-get install mysql-client
  • 配置文件:/etc/mysql
  • 命令集:/usr/bin
  • 数据库储存目录:/var/lib/mysql

Windows安装

Mysql服务

  • 查看Myql服务状态:sudo/etc/init.d/mysql status
  • 启动服务:sudo /etc/init.d/mysql start|stop|restartsudo service mysql start|stop|restart
  • 客户端连接服务:mysql -h主机地址 -u用户名 -p密码
    本地连接可省略主机地址如:mysql -uroot -p123456
  • 关闭服务连接:ctrl+d或者exit

关系型数据库

  • 数据表(table):存放数据的表格
  • 字段(column):每个列,表示含义
  • 记录(row):每个行,表示一组数据

SQL语言

结构化查询语言。用于存取数据以及查询、更新和管理关系数据库系统。

  • 独立于数据库本身
  • 不同数据库略有不同
  • 命令以;结尾
  • 命令不区分字母大小写

构建数据库

  • 查看已有库:show databases;
  • 创建库:create database 库名 [character set utf8];
    例:创建名为stu的数据库,编码为utf8
    creat database stu character set utf8;creat database stu charset=utf8;
  • 查看创建的语句:show create database 库名;
    例:查看stu库的创建方法show create database stu;
  • 查看当前所在库:select database();
  • 切换库:use 库名;
  • 删除库:drop database 库名;

构建数据表

根据业务需要设计存储内容、根据存储内容构建表的字段结构、根据字段数据特征确定字段类型。

  • 创建表:
    creat table 表名(
    	字段名 数据类型 字段约束,
    	字段名 数据类型 字段约束,
    	...
    	字段名 数据类型 字段约束
    );
    
  • 数据类型支持
    在这里插入图片描述
    在这里插入图片描述
  • ENUM:从给定值的集合中选择某一个值
    定义格式:ENUM(值1,值2,……,值N)
  • SET:从给定值的结合中选择一个或多个值
    定义格式:SET(值1,值2,……,值N)

数据表示例

  • 创建班级表
    create table class_1(
    	id int primary key auto_increment,
    	name varchar(32) not null,
    	age tinyint unsigned not null,
    	sex enum('w','m'),
    	score float default 0.0);
    
  • 创建兴趣班表
    create table interest(
    	id int primary key auto_increment,
    	name varchar(32) not null,
    	hobby set('sing','dance','draw'),
    	level char not null,
    	price decimal(6,2),remark text);
    

数据表操作

  • 查看数据表:show tables;
  • 查看已有表的字符集:show create table 表名;
  • 查看表结构:desc 表名;
  • 删除表:drop table 表名;

数据操作语句

  • insert语句
    insert into 表名 values (值1),(值2),···;
    insert into 表名(字段1,···) values(值1),···;
    例:向学生表中插入数据

    insert into class_1 values
    	(2,'Baron',10,'m',91),
    	(3,'Jame',9,'m',90);
    
  • select语句
    select * from 表名 [where 条件];
    select 字段1,字段2 from 表名 [where 条件];
    例:
    select * from class_1;
    select name ,age from class_1;

  • where字句
    通过一定的运算条件进行数据的筛选

  • 算数运算符

+-*/或DIV%或MOD
加法减法乘法除法取余
  • 比较运算符
NOT或!ANDORXOR
逻辑非逻辑与逻辑或逻辑异或
  • 位运算符
&|^!<<>>
按位与按位或按位异或取反左移右移
  • update语句
    update 表名 set 字段1=值1,字段2=值2,··· where 条件;
    例:
    update class_1 set age=11 where name='Abby';

  • delete 语句
    delete from 表名 where 条件;(若不加where条件,则清空所有记录)
    例:
    delete from class_1 where name='Abby';

aleter和时间类型

  • 修改表结构字段

    • alter table 表名 add 字段名 数据类型;
    • alter table 表名 add 字段名 数据类型 first;
    • alter table 表名 add 字段名 数据类型 after 字段名;
    • alter table 表名 drop 字段名;
    • alter table 表名 modify 字段名 新数据类型;
    • alter table 表名 change 旧字段名 新字段名 新数据类型;
    • alter table 表名 rename 新表名;

时间数据类型

  • 时间和日期类型

    • 日期DATE, 日期时间DATETIME,时间戳TIMESTAMP
    • 时间TIME
    • 年份YEAR
    类型字节范围格式用途
    DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
    TIME3‘-838:59’/‘838:59:59’HH:MM:SS时间值或持续时间
    YEAR11901/2155YYYY年份值
    DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
    TIMESTAMP41970-01-01 00:00:00/2038 结束时间是第2147483647秒,北京时间2038-1-19 11:14:07,格林尼治时间2038年1月19日 凌晨03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳
  • 时间格式

    • date:“YYYY-MM-DD”
    • time:“HH:MM:SS”
    • datetime:“YYYY-MM-DD HH:MM:SS”
    • timestamp:“YYYY-MM-DD HH:MM:SS”
      注意:1、datetime:以系统时间存储。2、timestamp:以标准时间存储但是查看时转换为系统时区,所以表现形式与datetime相同
  • 时间日期函数

    • now()返回服务器当前日期时间,格式对应datetime类型
    • curdate()返回当前日期,格式对应date类型
    • curtime()返回当前时间,格式对应time类型
  • 时间运算
    select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位);
    时间间隔单位:2 hour、1 minute、2 second、2 year、3 month、1 day
    例:查找注册时间在一周以内的记录
    select * from marathon where registration_time>(now()-interval 7 day);

高级查询语句

  • 模糊查询
    LIKE用于在where子句中进行模糊查询,SQL LIKE子句中使用百分号%来表示任意0个或多个字符,下划线_表示任意一个字符。
    使用LIKE子句从数据表中读取数据的通用语法:
    SELECT field1,field2,···fieldn FROM table_name WHERE field1 LIKE condition1
    例:
    select * from class_1 where name like 'A%';

  • as 用法
    在sql语句中as用于给字段或者表重命名,特别是一些名字比较长的表或者字段,可以简化表和字段的表达方式。
    select name as 姓名,age as 年龄 from class_1;
    select * from class_1 as c where c.age>17;

  • 排序
    ORDER BY子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
    使用ORDER BY 子句将查询数据排序后再返回数据:
    SELECT field1,field2,···fieldn from table_name1 where field1 ORDER BY field1[ASC[DESC]]
    默认情况ASC表示升序,DESC表示降序
    select * from class_1 where sex='m' order by age;

  • 限制
    LIMIT子句用于限制由SELECT语句返回的数据数量或者UPDATE,DELETE语句的操作数量带有LIMIT子句的SELECT语句的级别语法:
    SELECT column1,column2,columnn FROM table_name WHERE field LIMIT [num]

  • 联合查询
    UNION操作符用于连接两个以上的SELECT 语句的结果组合到一个结果结合中。多个SELECT语句会删除重复的数据。
    UNION操作符语法格式:
    SELECT expression1,expression2,··· expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2,··· expression_n FROM table [WHERE conditions];
    默认情况下UNION操作符已经删除了重复数据,所以DISTINCT修饰符对结果没啥影响。如果是ALL则返回所有结果集,包含重复数据。
    select * from class_1 where sex='m' UNION ALL select * from class_1 where age>9;

  • 子查询
    当一个select语句中包含另一个select查询语句,则称为子查询的语句。

    • from之后,子查询的内容作为一个新的表内容,再进行外层select查询
      select name from (select * from class_1 where sex='m') as s where s.score>90;
    • where条件中,此时select查询到的内容作为外层查询的条件值
      select * from class_1 where age=(select age from class_1 where name='Tom');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值