MySQL 操作数据库、数据表

通过mysql-client连接到mysql-server,sql语句要以分号结尾,这样按Enter才会执行sql语句。

mysql关键字不区分大小写

字符串、时间日期类型的值要引起来

数据库操作

show databases;  #显示已有的数据库
create database db_student character set utf8;  #新建数据库并指定使用的字符集
create database db_student;  #新建数据库,使用默认的字符集
drop database db_studrnt;  #删除数据库

use db_student;  #使用指定的数据库。要先使用此语句,才能使用该数据库中的表

数据表操作

show tables;  #查看当前数据库中的表

drop table 表名;  #删除表

desc 表名;  #查看该表的定义

show create table 表名;  #查看该表的建表语句

rename table 原表名 to 新表名;

 create table tb_user(
    id int not null auto_increment,  #字段名 数据类型 【约束】

    name varchar(20) not null, 
    primary key (id)   #设置主键

  );

 alter table 表名 add 字段名 数据类型 [约束];  #添加一列

alter table 表名 drop 字段名;  #删除一列

 alter table 表名 modify 字段名 数据类型 [约束] ;  #修改某列的定义

alter table 表名 character set utf8;  #修改字符集

字段名写成`字段名`的形式,可以防止字段名和mysql关键字冲突(字段名和mysql关键字相同)

记录操作

select 列名1,列名2 from 表名;  #返会的结果集是一张虚拟的表
select * from 表名;

insert into 表名 (列名1,列名2) values (值1,值2); #插入一条记录
insert into 表名 (列名1,列名2) values (值1,值2),(值11,值22);  #同时插入多条记录,()之间逗号分隔

delete from 表名 where ...  #删除记录

delete from 表名;  #删除表中所有记录truncate table 表名;  #删除表中的所有记录#delete是逐条删除表中的所有记录,truncate是直接将原表删除,再根据表定义新建一张空表。truncate速度比delete快

update 表名 set 列名1=值1,列名2=值2 where... #更新一条记录update tb_user set age=age+2 where name=‘chy‘;  #在原值的基础上

时间日期类型、字符串类型的值都要引起来,比如where name=‘chy‘

插入、更新操作如果要写的字段、值很多,自己写很麻烦、还容易出错,在navicat、datagrip等工具中插入、更新一条记录,复制控制台代打印出来的sql语句,粘到项目中改下即可。

where子句

where子句select、update、delete都可以使用。

where id=1  #等于

where id!=1  #不等于
where id<>1  #不等于也可以这样写

#>  >=   <   <=   不一一写了

where id between 1 and 10  #id在[1,10]上,是闭区间

where id in (1,3,9)  #id=1或id=3或id=9

where score is null where score is not null

where score>60 and score<90where score<60 or score>90where score not 

#模糊匹配,用于匹配字符串。常见于模糊查询,但delete、update也可以用where name like ‘张%‘  #以张开头。pattern要引起来where name like ‘%伟‘   #以伟结尾where name like ‘%国%‘ #含有国字就ok

%  #一个或多个字符_   #任意一个字符[abcd]  #abcd中的任意一个字符,只代表一个字符。比如 ‘张[杰伟]‘ 匹配张杰或张伟[!abcd]  #不是abcd中的任意一个字符就行,只代表一个字符,比如‘张[!杰伟]‘  只要不是张杰、张伟就ok[^abcd]  #!也可以写成^,同上

查询专用

select distinct 列名 from 表名;  #去重。如果结果集中有完全相同的记录,只保留一条

select 列名1*列名2 from 表名;  #可以进行数学运算,但要求参与运算的列都是数值型

select 列名 as 别名 from 表名;   #别名,常用于原列名较长、难记的情况select 列名1+列名2 as 别名 from 表名;  #或者要进行运算

#order by子句,结果集排序select 列名 from 表名 order by 列名;  #默认按升序(asc)排列

select 列名 from 表名 order by 列名 desc;  #可指定序别,desc是降序
select 列名 from 表名 order by 列名1 asc,列名2 desc;  #先按列名1排序,列名1相同记录再按列名2排序。列名1叫做第一排序关键字,列名2叫做第二排序关键字

#排序的列结果集中要有
#聚合函数。所谓聚合函数,就是mysql自带的对结果集进行统计、分析的函数。在聚合函数中,值是null的记录均不参与统计。

select count(*) from 表名;  #统计记录数select count(列名) from 表名;  #统计某一列的记录数select count(distinct 列名) from 表名;  #去重,结果集中重复的记录只算做一条#null不计算在内

select max(列名) from 表名;select min(列名) from 表名;

select sum(列名) from 表名;select avg(列名) from 表名;

select sum(列名),avg(列名) from 表名;  #都可以配合使用

#group by 子句,结果集分组

select * from tb_student group by dep;  #对结果集按指定的列进行分组,比如此处把dep相同的记录分为一组,显示分好的组

select count(*) from tb_student group by dep;  #单独使用group by没多大意义,一般都是和聚合函数搭配使用,用于统计每组的数据。比如此处计算每个系的学生人数
select avg(score) from tb_student group by class;  #计算每个班的平均分
#having子句select * from user_tb having id>10; #having的作用和where差不多,都是对记录进行过滤#但过滤时机不同,where是在数据库中过滤,将符合要求的记录放到结果集中#having是对结果集中的记录进行过滤,将过滤好的结果返回给客户端

select * from student_tb [where子句] group by class having avg(score)<80 #having一般和group by配合使用#因为group by后面不能使用where,且where子句中不能使用聚合函数#此处是先根据where从数据库中获取结果集,再将结果集按班级分组,去掉平均分<80的班级,最终返回给客户端的是平均分>=80的班级

#分页,常见的分页方式有三种:#1、where只取出指定区间上的记录,比如where id>0 and where id<10,或者where id between 1 and 9 #2、limit对结果集进行限制#3、查询、返回所有记录,由客户端自己实现分页

#limit子句  结果集分页select * from user_tb [where子句] [order by子句] limit 10;  #只取出结果集的前10条记录。注意是对结果集进行限制,从结果集中取
select * from user_tb [where子句] [order by子句] limit 9,19;  #只取出结果集的第[10,20]条记录。都+1,再取闭区间

#多个子句常见的书写、执行顺序

select ...  from ...  [where子句]  [group by子句]  [having子句]  [order by子句]  [limit子句]

#先执行select ... from ...  [where子句]  将匹配的记录放到结果集中#再group by将结果集中的记录分组#having对分组进行过滤,去掉不满足要求的分组#orderby排序#limit只取出结果集某个区间的记录,返回给客户端

#和书写顺序一致#一般不会这么长,常见的是以下2种:select ...  from ...  [where子句]  [group by子句]  [having子句]select ...  from ...  [where子句]  [order by子句]  [limit子句]

字符串类型的排序、比较均按码值比较,先按第一个字符的码值排序、比较,如果相同则再比较第二个字符的码值

原文地址:https://www.cnblogs.com/chy18883701161/p/12423244.html

时间: 2024-08-26 17:36:30

MySQL 操作数据库、数据表的相关文章

19 MySQL概念 数据库 数据表 数据类型 增加删除修改查询 WHERE Order By Limit

数据库管理系统DBMS 数据库中相关概念 数据库 数据表 记录 字段 数据 登录和退出MySQL客户端 查询自己的MySQL服务器有几个数据库 二.退出MySQL客户端的命令 修改root用户的密码 在MySQL客户端来修改密码(当前账号的密码) 数据库操作 创建数据库 显示所有数据库 删除数据库 选择数据库 更改数据库默认字符集 数据表操作 显示当前数据库中的所有表 创建数据表 显示表的创建 列的常用属性 修改数据表 删除数据表 显示表结构 MySQL数据类型 整型 浮点型 字符型 文本型 日

python操作数据库-数据表

数据表: 数据类型: 帮助的三种形式: 在cmd中输入: help 要帮助的主题词,或 ? 要帮助的主题词 或  \h 要帮助的主题词 . 数据表的创建: CREATE database IF NOT exists zbltest2 default character set 'utf8'; USE zbltest2; CREATE TABLE IF NOT EXISTS `user`( id SMALLINT, username VARCHAR(20) ) ENGINE=INNODB CHAR

MySQL操作(三)数据表

一.创建数据表 方式1 CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT, sex TINYINT NOT NULL DEFAULT 0 )ENGINE=MyISAM DEFAULT CHARSET=utf8; 方式2 --1. 创建一个临时的新表,首先复制旧表的结构(包含索引) CREATE TABLE new_table LIKE old_tab

MYSQL千万级数据表,创建表及字段扩展的几条建议

MYSQL千万级数据表,创建表及字段扩展的几条建议 一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及字段扩展,这几个方面来给出建议. 二:创建表 假如现在我们需要创建IM项目中的聊天消息表,这个表数据量大,读操作远超过写操作,我们都知道,mysql常用的数据库引擎主要有innodb,myisam,这两个数据库引擎主要区别是,innodb支持事务,

PHP创建数据库数据表

PHP创建数据库数据表 <?php $con = mysql_connect('localhost', 'root', 'root'); /************************在数据库中创建表*************************/ if (!$con) { die ('连接数据库出错: ' . mysql_error()); } $database="my_db_name"; $sqlDatabase = 'create database '.$data

MySQL在创建数据表的时候创建索引

转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CREATE TABLE 表名(字段名 数据类型 [完整性约束条件], [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY [索引名](字段名1 [(长度)] [ASC | DESC]) ); UNIQUE:可选.表示索引为唯一性索引. FULLTEXT:可选.表示索引为全

mysql编码、数据表编码查看和修改总结

1,查看自己安装的mysql的编码 2.查看Mysql支持的编码 3.查看数据库编码 4.查看数据表编码(show create table user \G;) 5.修改my.ini文件来修改编码:加上default-character-set=字符集(utf8.gbk.gb2312等) 6.命令行修改:alter database da_name default character set 'charset' :或  set names 'charset':或alter database te

mysql 查看数据库,表,字段信息

查询MySQL数据库/表相关信息的SQL语句: SHOW DATABASES //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name] //列出数据库数据表. SHOW CREATE TABLES tbl_name //导出数据表结构. SHOW TABLE STATUS [FROM db_name] //列出数据表及表状态信息. SHOW COLUMNS FROM tbl_name [FROM db_name] //列出资料表字段 SHOW FIELD

【MySQL】2、MySQL 创建数据库和表

2.MySQL 创建数据库和表 2.1.创建数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库. CREATE DATABASE database_name 为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数(用于向 MySQL 连接发送查询或命令). 2.2.创建表 CREATE TABLE 用于在 MySQL 中创建数据库表. CREATE TABLE table_name ( column_name1 data_type, column

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My