首页 > 数据库 >06-服务器端命令(SQL)

06-服务器端命令(SQL)

时间:2023-12-27 14:47:01浏览次数:34  
标签:city 06 name countrycode t1 SQL WHERE SELECT 服务器端

SQL定义:结构化的查询语言,mysql接口程序只负责接收SQL,传送给SQL层

SQL种类

  • DDL:数据库(对象)定义语言
  • DCL:数据库控制语言(grant revoke)
  • DML:数据(行)操作语言(update delete insert)
  • DQL: 数据查询语言(show、select)

一、DDL:数据库(对象)定义语言:

DDL
image

对库的操作

create database lufei; 
create schema  lf;
show databases;
create database llf CHARACTER SET utf8 ;
show create database llf; # 查询表的创建属性
drop database llf; 
help  create database;
字符集:  CHARACTER SET [=] charset_name
排序规则:COLLATE [=] collation_name
		
改库的字符集:
ALTER DATABASE [db_name] CHARACTER SET  charset_name COLLATE collation_name
mysql> alter database lf charset utf8mb4;
mysql> show create database lf;

对表的操作

  • 表数据:数据行
  • 表属性(元数据):表名、列名字、列定义(数据类型、约束、特殊列属性)、表的索引信息

创建:

create table t1 (id int ,name varchar(20));

查询:

show tables;
show create table t1; #查询创建语句
desc t1 # 查看列属性

show charset; #查看支持的字符集

show collation; # 查看支持的校对规则

删除

drop table t1;

修改:

  • (1)在表中添加一列
alter table t1 add age int;
  • (2)添加多列
alter table t1 add bridate datetime, add gender enum('M','F');
  • (3)在指定列后添加一列
alter table t1 add stu_id int after id;
  • (4)在表中最前添加一列
alter table t1 add sid int first;
  • (5)删除列
 alter table t1 drop sid;
  • (6)修改列名
alter table t1 change name stu_name varchar(20);
  • (7)修改列属性
alter table t1 modify stu_id varchar(20);
  • (8)修改表名
rename table t1 to student;
		
alter table student rename  to stu;
  • 修改字符集
alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
alter table t1 CHARACTER SET latin1;

注意:更改字符集时,一定要保证由小往大改,后者必须是前者的严格超集。
生产中别随便改。

二、DML:数据(行)操作语言(update delete insert)

  1. 创建一个表
create table t1 (id int ,name varchar(20));
  1. 在表中插入数据
insert into t1 values(1,'zhang3'); # 插入一行数据
select * from t1;
insert into t1 values (2,'li4'),(3,'wang5'),(4,'ma6'); # 插入多行数据
insert into t1(name) values ('xyz'); # 只给某一列插入数据这里是name列
  1. 更新表中数据
update
update  t1  set name='zhang33' ;   ----会更新表中所有行的name字段,比较危险。
update  t1  set name='zhang55' where id=1;   ----update在使用时一般都会有where条件去限制。
  1. 删除数据
delete
delete from t1 ;  --删除表中所有行,比较危险。一行一行删除表中数据。
delete from t1   where  id=2;

truncate table t1; ---DDL 操作在物理上删除表数据,速度比较快。

三、DQL: 数据查询语言(show、select)

select 基本查询

  1. 语法
SELECT * FROM world.`city`;
       列        库.表
  1. 查询中国(CHN)所有的城市信息
SELECT * FROM world.`city` WHERE countrycode='CHN';
  1. 查询中国(CHN)安徽省所有的城市信息。AND
SELECT * FROM world.`city` WHERE countrycode='CHN' AND District='anhui';
  1. 查询世界上人口数量在10w-20w城市信息 BETWEEN
SELECT * FROM world.`city` WHERE population BETWEEN 100000 AND 200000 ;
  1. 中国或者日本的所有城市信息 IN
SELECT * FROM world.city WHERE countrycode IN ('CHN','JPN');
  1. 模糊查询 LIKE
SELECT * FROM world.`city` WHERE countrycode LIKE 'CH%';

7.按照人口数量排序输出中国的城市信息(ASC\DESC)

SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population ;
SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population DESC; #从大到小
  1. LIMIT
SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population DESC LIMIT 10; # 显示前10行

SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population DESC LIMIT 12,10; # 从12行开始往后显示10行

SELECT * FROM world.`city` WHERE countrycode='CHN' ORDER BY population DESC LIMIT 10 OFFSET 12;  # 从12行开始往后显示10行

表连接查询

  1. 传统的连接写法使用where 中国所有城市信息+使用语言 (需要两个名字一样的列)
SELECT ci.id,ci.name,ci.countrycode,ci.population,cl.language  # 需要查询的信息
FROM
city AS ci , countrylanguage AS cl # 在那个表中查询 AS设置别名
WHERE 
ci.countrycode='CHN' #查询个条件
AND
ci.`CountryCode` = cl.`CountryCode` # 两个表具有相同值的列
  1. 查询青岛这个城市,所在的国家具体叫什么名字 JOIN ON
SELECT ci.name ,ci.countrycode,ci.population ,co.name # 需要查询的列
FROM city AS ci  # 哪个表和设置别名
JOIN 
country AS co  # 关联到那个表和设置别名
ON ci.countrycode=co.code #两个表具有相同值的列
AND
ci.name='qingdao'; # 查询的条件

group by +聚合函数(avg()、max()、min()、sum())

  1. 查询中国的总人口数量
SELECT countrycode ,SUM(population) FROM city
WHERE countrycode = 'chn'
GROUP BY countrycode;

  1. union 用来替换 or 、in()
SELECT * FROM world.city
WHERE countrycode IN ('CHN','JPN');
改写为:

SELECT * FROM world.city WHERE countrycode='chn'
UNION  # 连接两个sql 查询的列需要一样
SELECT * FROM world.city WHERE countrycode='jpn'

标签:city,06,name,countrycode,t1,SQL,WHERE,SELECT,服务器端
From: https://www.cnblogs.com/ejjw/p/17930496.html

相关文章

  • 01-Mysql介绍及安装
    关系型数据库的特点二维表典型产品Oracle传统企业,MySQL是互联网企业数据存取是通过SQL最大特点,数据安全性方面强(ACID)•NoSQL:非关系型数据库(NotonlySQL)不是否定关系型数据库,做关系型数据库的的补充想做老大,先学会做老二•NoSQL特性总览–不是否定......
  • 在windows下安装mysql 8.1
    1、下载并解压官网下载mysql8,https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip解压到D:\mysql,以下称为根目录2、编写配置文件在根目录下新建my.ini文件,配置以下内容[mysqld]#设置3306端口port=3306#设置mysql的安装目录,一定要与上面的安装路......
  • 02-Mysql体系结构
    一、MySQL服务器连接模型2、应用程序如何连接到mysql2.1tcp/ip的方式mysql-uroot-poldboy123-h10.0.0.2002.2套接字的方式mysql-uroot-poldboy123-S/tmp/mysql.sock二、MySQL服务器构成——实例连接层sql层处理流程解析器(执行计划)--优化器(选择比......
  • 03-MySQL基本管理
    一、数据库连接管理mysql-uroot-poldboy123#隐藏条件-S默认socket方式mysql-uroot-poldboy123-h10.0.0.52-P3308#tcp/ip的方式mysql-uroot-poldboy123-S/application/mysql/tmp/mysql.sock#socket方式mysql-uroot-poldboy123-e"showvariableslike......
  • 完美解决SqlServer2012启动报错(cannot find one or more components.Please reinstall
    原因:默认安装在C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0文件夹,以支持sqlserver2012.(我之前不小心把这个文件夹删除了)。解决方案:下载了visualstudio2010Isolatedshell完美解决问题,下载后安装就能正常运行SqlServer2012了,其他SqlServer版本请下载visualstudio......
  • SQL注入
    需知MYSQL5.0以上版本:自带的数据库名information_schemainformation_schema:存储数据库下的数据库名及表名,列名信息的数据库information_schema.tables:记录表名信息的表information_schema.columns:记录列名信息表数据库版本information_schema查询-version()数据库用户R......
  • Mysql根据字段值的长度查找过滤,排序等
    Mysql根据字段值的长度查找过滤,排序等http://www.shanhubei.com/archives/5882.html1.Mysql根据字段的指定长度搜索过滤SELECT*FROMuserWHEREis_deleted=0ANDlength(name)>52.添加普通索引ALTERTABLE'table_name'ADDINDEXindex_name('column')3.在表中某一列......
  • PostgreSQL数据库中插入数据并跳过重复记录
    概述:ONCONFLICT是将新数据插入现有表时处理唯一性冲突的一种方式快速预览1.DOUPDATESET:重复则更新2.DONOTHING:重复则跳过先创建表t_daily_stats、并且主键字段由serial_no、date组成,以及其他字段--创建设备每日统计表CREATETABLEt_daily_stats(seri......
  • SQL获取年月日方法
    SQL获取年月日方法 方法一:利用DATENAME在SQL数据库中,DATENAME(datetype,date)函数的作用是从日期中提取指定部分数据,其返回类型是nvarchar.datetype类型见附表1.SELECTDATENAME(year,GETDATE())+'-'+DATENAME(MONTH,GETDATE())+'-'+DATENAME(DAY,GETDATE())SELECTDA......
  • (04)Lazarus上连接并显示SQlLite3数据库
    01]去官网https://www.sqlite.org/download.html下载对应的SQlite3.dll32位Lazarus下载sqlite-dll-win-x86-3440200.zip64位Lazarus下载sqlite-dll-win-x64-3440200.zip  下载后,将SQlite3.dll放在工程目录下          ......