[MySQL]基本的なデータベース操作を学ぶための5分(1)

(全文は約5500語で、予想される読み取り時間は5分です)


1. SQLとは何ですか?

構造化クエリ言語:構造化クエリ言語

分類:

1)DDL(データ定義言語)データ定義言語は
、データベースオブジェクト(データベース、テーブル、列など)を定義するために使用されます。キーワード:作成、削除、変更など
。2)DML(データ操作言語)データ操作言語は
、データベース内のテーブルのデータを追加、削除、および変更するために使用されます。キーワード:挿入、削除、更新など

。3)DQL(データクエリ言語)データクエリ言語は
、データベース内のテーブルのレコード(データ)をクエリするために使用されます。キーワード:select、whereなど
。4)DCL(データ制御言語)データ制御言語(理解)は
、データベースのアクセス権とセキュリティレベルを定義し、ユーザーを作成するために使用されます。キーワード:GRANT、REVOKEなど。

2.データベースのCRUD操作について

#Create
create database hzyc;
create database if not exists hzyc98 character set gbk;
#Retrieve
show databases;
show create database hzyc98;
#Update
alter database hzyc98 character set gbk;
#Delete
drop database hzyc98;
drop database if exists hzyc98; 
#查看当前使用的数据库
select database();
show tables;
use hzyc98

1.操作リスト:

テーブル名/ヘッダーは次のとおりです。zoomlist

#查
show tables; -- show tables_in_hzyc98
desc zoomlist;

#增
create table zoomlist (
	Name  varchar(30),
	Age	  int,
	ID	  int,
	Height double(5,1)
)

#删
drop table if exists zoomlist;

#改
alter table zoomlist rename to newzoomlist;
alter table zoomlist character set gbk;
alter table zoomlist add Name varchar(20);#加列
alter table zoomlist change Age newAge int;
alter table zoomlist modify Age char(8);
alter table zoomlist drop Name;

/*设置类型:*/
 - intdouble(5,1)varchar(20) 
 - date 	#yyyy-MM-dd
 - datetime #yyyy-MM-dd HH:mm:ss 
 - timestamp#时间戳 yyyy-MM-dd HH:mm:ss

2.テーブルのデータを操作します。

#除了数字,其他都需要引号来赋值
insert into zoomlist (Name, Age, ID, Height) value('美洲豹',5,'20201207',3.2);
insert into zoomlist ('美洲豹',5,'20201207',3.2);

#删除
delete from zoomlist where [条件];
delete from zoomlist;
TRUNCATE TABLE zoomlist;

#修改
update zoomlist set Name = '大笨象' Age = 12 where address = '深圳';
update zoomlist set address = '深圳';

a。クエリ

#查询
#尽量不要用 * 先desc一下表里面有啥,然后在决定展示什么东西。
SELECT * FROM zoomlist; 
SELECT Name,Age FROM zoomlist;	 --只显示某个列,方便查看!
SELECT DISTINCT Name FROM zoomlist; --去除结果中[完全重复]的

SELECT Name,score1,score2,scroe1+scroe2 FROM zoomlist;--as:自定义名字展示,也可以不写as
SELECT Name,scroe1+IFNULL(scroe2,0) 总分 FROM zoomlist; --ifnull遇到没有值的直接给赋值为0
SELECT Name,score1,score2,scroe1+IFNULL(scroe2,0) AS 总分 --显示表头
FROM zoomlist,peoplelist; --从zoomlist、peoplelist里面获取

b。条件:

* ><<=>==!=<>--不等号
* andornot --关键字比&&、||、!好用推荐
* BETWEEN...AND --范围内都符合就行
* IN( 集合) --特定值的范围
* LIKE:模糊查询(1)_:单个任意字符;(2%:多个任意字符
* IS NULL

例子:
select Name, Age from Student where age between 12 and 20;
select Name, Age from Student where age in (12,14,16,18);
select Name, Age from Student where name like '%牛%'; --查名字里面包含了牛的学生
select Name, Age from Student where name is not null; -- 查询学生:名字空的不查

3、クエリ

1.並べ替えクエリ

select * from employee order by age;
select * from employee order by age asc; --升序
select * from employee order by age desc; --降序
select * from employee order by age desc height desc; --第一个一样的时候,才会用第二个方法排序(age降序,身高降序)

2.集計関数(列の計算)

nullデータを除き、nullデータは計算に参加しないため、エラーは報告されません。

  1. カウント:数を数える
  2. 最小、最大、合計、平均:評価
select count(*) from student;
select count(ifnull(age,20)) from student; 
select count(age) from student;--如果没有就不记录
select count(id) from student; --我们一般选用主键来统计个数

select max(age) from student;
select min(age) from student;
select sum(age) from student;
select avg(age) from student;

3.グループクエリ

グループ化が2つの異なるグループになると、独立した個人を表示できなくなります。

  • グループ化後に照会されるフィールド:グループ化フィールド、集約関数。
  • どこと持っているの違いは?
    • ここで、はグループ化の前に定義され、havingはグループ化の後に定義されます。
    • 条件を満たさない場合はグループ化に参加せず、条件を満たさない場合は表示されません。
    • 持っていることだけが、総合的な機能の判断に続くことができます。
select sex,count(name) from employee group by sex having count(name)<6;

select sex,count(name) from employee where name = '张四' group by sex ;

4.クエリを並べ替える

limitはMySQLの方言で、ページングに使用されます

SELECT * FROM student LIMIT 0,5; -- 第1页,从0索引开始,读5个数据

SELECT * FROM student LIMIT 7,10; -- 第2页,从7索引开始(第8个数据),读10个数据

4、制約

  • 制約:
    1. 主キー制約:主キー
    2. 空でない制約:nullではない
    3. 唯一の制約:一意
    4. 外部キー制約:外部キー

1.空でない制約:nullではない

-- 建表时添加非空约束:
 create table employee(
 	name char(30),
 	sex char(8) not null
 )
 alter table employee modify sex char(8) not null; --添加非空约束
 alter table employee modify sex char(8); --破除非空约束
 

空でない制約インスタンス

2.固有の制約

null値は1つだけで、それ以上
はできません。削除制約は、ドロップインデックスのみを使用して一意の制約を削除できます。

-- 建表时添加唯一约束:
 create table employee(
 	name char(30),
 	sex char(8),
 	score int unique --分数要唯一
 )
 
--添加唯一约束
alter table employee modify name char(8) unique;
 
--破除唯一约束
-- alter table employee modify sex char(8); 不可用
--破除name身上的unique约束用drop index除去索引
alter table employee drop index name; 

操作例:

一意の制約を直接変更することはできません
ドロップは一意の制約を正常に削除します

3.プライマリキーの制約:プライマリキー

テーブルにはプライマリキーが1つだけあります。これは空ではなく
、レコードの一意のIDとして一意であり、インデックスと同等です。

-- 建表时添加主键约束:
 create table employee(
 	id int  primary key, --给id加上主键约束
 	name char(30),
 )
 
--添加唯一约束
alter table employee modify id int primary key;
 
--破除唯一约束
-- alter table employee modify id int; 不可用!
--破除id身上的primary key约束只能用drop primary key
alter table employee drop primary key; 

4.自動成長:auto_increment

値にのみ役立ち、通常は自動拡張のプライマリキーに配置できます

-- 建表时添加auto_increment:
 create table employee(
 	id int auto_increment, --给id加上auto_increment
 	name char(30),
 )
 
--添加auto_increment,自动从1开始
alter table employee modify id int auto_increment;
--设置初值
alter table employee auto_increment = 100;
 
--破除auto_increment
alter table employee modify id int; 

5、まとめ

SQLとは何かを学び、簡単な紹介を行い、いくつかの基本的なMySQL操作、およびクエリと制約についても説明しました。

しかし、私はMySQLに触れたばかりなので、基本的な演算子は比較的新しいものであり、真の知識を得るには、さらに学び、練習する必要があります。

将来的には、MySQLの複数の関係、マルチテーブルクエリ、トランザクション(それらが何であるかはわかりません)、JDBCステートメント、データベース接続プールdruid、JDBCTemplateについても学習します...学ぶべきことはまだたくさんありますが、タスクはまだですそれは基本的なことを整理することにあり、基盤を統合することが最後の言葉です!

エラーの例:

データを追加するときに列名を書き込まない場合は、すべての列値を指定する必要があります。そうしないと、エラーが報告されます。
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43801418/article/details/110820203