fix: converted single to triple backticks14 (#36241)

This commit is contained in:
Randell Dawson
2019-06-20 13:35:05 -07:00
committed by Tom
parent 7917d5c6c3
commit 397014136e
75 changed files with 1782 additions and 1506 deletions

View File

@ -8,38 +8,42 @@ localeTitle: ملموس
React Native ships مع عنصر `Button` يعمل مع العديد من تفاعلات `onPress` القياسية. بشكل افتراضي ، فإنه يعطي ملاحظات المستخدم عن طريق تغيير العتامة لإظهار الضغط على الزر. الاستعمال: React Native ships مع عنصر `Button` يعمل مع العديد من تفاعلات `onPress` القياسية. بشكل افتراضي ، فإنه يعطي ملاحظات المستخدم عن طريق تغيير العتامة لإظهار الضغط على الزر. الاستعمال:
`<Button onPress={handlePress} title="Submit" /> ```js
` <Button onPress={handlePress} title="Submit" />
```
لحالات الاستخدام الأكثر تعقيدًا ، قام React Native بإنشاء واجهات برمجة التطبيقات للتعامل مع التفاعلات الصحفية المسماة `Touchables` . لحالات الاستخدام الأكثر تعقيدًا ، قام React Native بإنشاء واجهات برمجة التطبيقات للتعامل مع التفاعلات الصحفية المسماة `Touchables` .
`TouchableHighlight ```
TouchableNativeFeedback TouchableHighlight
TouchableOpacity TouchableNativeFeedback
TouchableWithoutFeedback TouchableOpacity
` TouchableWithoutFeedback
```
يمكن تصميم واستخدام كل من هذه المكونات القابلة للتشابك مع مكتبة ، مثل `Animated` المدمجة ، مما يتيح لك إنشاء أنواع خاصة بك من تعليقات المستخدمين المخصصة. يمكن تصميم واستخدام كل من هذه المكونات القابلة للتشابك مع مكتبة ، مثل `Animated` المدمجة ، مما يتيح لك إنشاء أنواع خاصة بك من تعليقات المستخدمين المخصصة.
بعض الأمثلة على استخدام هذه المكونات: بعض الأمثلة على استخدام هذه المكونات:
`// with images ```js
<TouchableHighlight onPress={this.handlePress}> // with images
<Image <TouchableHighlight onPress={this.handlePress}>
style={styles.button} <Image
source={require('./logo.png')} style={styles.button}
/> source={require('./logo.png')}
</TouchableHighlight> />
</TouchableHighlight>
// with text
<TouchableHighlight onPress={this.handlePress}> // with text
<Text>Hello</Text> <TouchableHighlight onPress={this.handlePress}>
</TouchableHighlight> <Text>Hello</Text>
` </TouchableHighlight>
```
يمكنك التعامل مع أنواع مختلفة من الضغط على الزر أيضًا. بشكل افتراضي ، يتم تكوين الأزرار و touchables للتعامل مع الصنابير العادية ، ولكن يمكنك أيضا أن تشير إلى وظيفة لاستدعاء اضغط مع الاستمرار على التفاعلات على سبيل المثال. يمكنك التعامل مع أنواع مختلفة من الضغط على الزر أيضًا. بشكل افتراضي ، يتم تكوين الأزرار و touchables للتعامل مع الصنابير العادية ، ولكن يمكنك أيضا أن تشير إلى وظيفة لاستدعاء اضغط مع الاستمرار على التفاعلات على سبيل المثال.
`<TouchableHighlight onPress={this.handlePress} onLongPress={this.handleLongPress}> ```js
` <TouchableHighlight onPress={this.handlePress} onLongPress={this.handleLongPress}>
```
للاطلاع على جميع الأدوات المتوفرة المتوفرة وكيفية عمل هذه المكونات ، يمكنك الاطلاع على [شفرة مصدر جافا سكريبت لـ Touchables هنا](https://github.com/facebook/react-native/tree/master/Libraries/Components/Touchable) . للاطلاع على جميع الأدوات المتوفرة المتوفرة وكيفية عمل هذه المكونات ، يمكنك الاطلاع على [شفرة مصدر جافا سكريبت لـ Touchables هنا](https://github.com/facebook/react-native/tree/master/Libraries/Components/Touchable) .

View File

@ -20,8 +20,9 @@ Redux هو حاوية حالة يمكن التنبؤ بها لتطبيقات Jav
#### أين يتم تخزين هذه الحالة؟ Redux يوفر لك وظيفة يدوية تسمى #### أين يتم تخزين هذه الحالة؟ Redux يوفر لك وظيفة يدوية تسمى
`createStore() ```js
` createStore()
```
حيث يمكنك إنشاء المتجر الذي سيحافظ على كل حالتك. حيث يمكنك إنشاء المتجر الذي سيحافظ على كل حالتك.
@ -29,8 +30,9 @@ Redux هو حاوية حالة يمكن التنبؤ بها لتطبيقات Jav
#### لا يمكن تغيير الحالة إلا من خلال وظيفة نقية تعرف بالمخفّض حتى نتمكن من إنشاء هذا الاتصال سنمرر في المخفض إلى CreateStore () مثل #### لا يمكن تغيير الحالة إلا من خلال وظيفة نقية تعرف بالمخفّض حتى نتمكن من إنشاء هذا الاتصال سنمرر في المخفض إلى CreateStore () مثل
`var store = createStore(reducer) ```js
` var store = createStore(reducer)
```
يصبح الأمر أكثر تعقيدا عندما يكون لديك مخفضات أكثر ولكن في الصميم ، يحتوي المخزن الآن على مخفض متصل به يصبح الأمر أكثر تعقيدا عندما يكون لديك مخفضات أكثر ولكن في الصميم ، يحتوي المخزن الآن على مخفض متصل به
@ -40,20 +42,22 @@ Redux هو حاوية حالة يمكن التنبؤ بها لتطبيقات Jav
تستطيع أن ترى أين يحدث هذا. تستطيع أن ترى أين يحدث هذا.
`store.dispatch(action) ```js
` store.dispatch(action)
```
قبل أن أتناول ما هو المخفض والعمل الذي أقوم به ، أعتقد أن عرض تطبيق أساسي ومحدود للغاية لـ CreateStore () من Redux سوف يساعد بشكل كبير. قبل أن أتناول ما هو المخفض والعمل الذي أقوم به ، أعتقد أن عرض تطبيق أساسي ومحدود للغاية لـ CreateStore () من Redux سوف يساعد بشكل كبير.
`createStore = (reducer) => { ```js
let state; createStore = (reducer) => {
//dispatch method let state;
dispatch = (action) => { //dispatch method
state = reducer(state, action) dispatch = (action) => {
} state = reducer(state, action)
return {dispatch} }
} return {dispatch}
` }
```
انظر كيف نمرر في المخفض إلى createStore ويصبح مضبوطًا في طريقة إرسالنا ؛ وعندما نطلق على طريقة الإرسال فإنه يأخذ في عمل ويضع حالة جديدة على أساس ما سوف يعود المخفض. انظر كيف نمرر في المخفض إلى createStore ويصبح مضبوطًا في طريقة إرسالنا ؛ وعندما نطلق على طريقة الإرسال فإنه يأخذ في عمل ويضع حالة جديدة على أساس ما سوف يعود المخفض.
@ -61,8 +65,9 @@ Redux هو حاوية حالة يمكن التنبؤ بها لتطبيقات Jav
الإجراء في المستوى الأساسي هو كائن له خاصية تسمى النوع. يمكن أن يكون لها أيضًا خصائص أخرى ، ولكن ببساطة ستتمتع بالنوع. الإجراء في المستوى الأساسي هو كائن له خاصية تسمى النوع. يمكن أن يكون لها أيضًا خصائص أخرى ، ولكن ببساطة ستتمتع بالنوع.
`var someAction = {type:'doSomething'} ```js
` var someAction = {type:'doSomething'}
```
المخفض هو مجرد وظيفة: المخفض هو مجرد وظيفة:

View File

@ -8,8 +8,9 @@ localeTitle: إجراءات Redux
فمثلا فمثلا
`const ADD_ITEM = 'ADD_ITEM' ```javascript
` const ADD_ITEM = 'ADD_ITEM'
```
`{ `{
type: ADD_ITEM, type: ADD_ITEM,

View File

@ -51,15 +51,16 @@ Redux Thunk هي برامج وسيطة تسمح لك بإعادة الوظائف
يمكن تثبيت Redux Thunk باستخدام `npm install redux-thunk --save` أو `yarn add redux-thunk` مع سطر الأوامر. لأنها أداة Redux ، ستحتاج أيضًا إلى إعداد Redux. بمجرد تثبيته ، يتم تمكينه باستخدام `applyMiddleware()` : يمكن تثبيت Redux Thunk باستخدام `npm install redux-thunk --save` أو `yarn add redux-thunk` مع سطر الأوامر. لأنها أداة Redux ، ستحتاج أيضًا إلى إعداد Redux. بمجرد تثبيته ، يتم تمكينه باستخدام `applyMiddleware()` :
`import { createStore, applyMiddleware } from 'redux'; ```javascript
import thunk from 'redux-thunk'; import { createStore, applyMiddleware } from 'redux';
import rootReducer from './reducers/index'; import thunk from 'redux-thunk';
import rootReducer from './reducers/index';
const store = createStore(
rootReducer, const store = createStore(
applyMiddleware(thunk) rootReducer,
); applyMiddleware(thunk)
` );
```
### المراجع ### المراجع

View File

@ -45,8 +45,9 @@ localeTitle: الطبقات والكائنات
الآن ، لإنشاء مثيل لهذا الفصل ، تحتاج فقط إلى استدعاء الدالة `.new` . الآن ، لإنشاء مثيل لهذا الفصل ، تحتاج فقط إلى استدعاء الدالة `.new` .
`mazda3 = Car.new('Mazda', 'Mazda3', 'White') ```Ruby
` mazda3 = Car.new('Mazda', 'Mazda3', 'White')
```
هذا شيء عظيم ، لكن في بعض الأحيان قد تحتاج إلى تغيير بعض هذه السمات! معظم هذه الصفات في هذا المثال ستكون ثابتة. ومع ذلك ، تخيل أنك قررت الحصول على طلاء جديد. كيف ستذهب حول تحديث حالة هذا الشيء من `Car` ؟ هذا شيء عظيم ، لكن في بعض الأحيان قد تحتاج إلى تغيير بعض هذه السمات! معظم هذه الصفات في هذا المثال ستكون ثابتة. ومع ذلك ، تخيل أنك قررت الحصول على طلاء جديد. كيف ستذهب حول تحديث حالة هذا الشيء من `Car` ؟

View File

@ -10,96 +10,111 @@ localeTitle: طرق المصفوفة المشتركة
\`\` \`روبي الصفيف = \[0 ، 1 ، 2 ، 3 ، 4\] \`\` \`روبي الصفيف = \[0 ، 1 ، 2 ، 3 ، 4\]
`#### .length ```
The .length method tallies the number of elements in your array and returns the count: #### .length
` The .length method tallies the number of elements in your array and returns the count:
```
ياقوت array.length => 5 ياقوت array.length => 5
`#### .first ```
The .first method accesses the first element of the array, the element at index 0: #### .first
` The .first method accesses the first element of the array, the element at index 0:
```
ياقوت array.first => 0 ياقوت array.first => 0
`#### .last ```
The .last method accesses the last element of the array: #### .last
` The .last method accesses the last element of the array:
```
ياقوت array.last => 4 ياقوت array.last => 4
`#### .take ```
The .take method returns the first n elements of the array: #### .take
` The .take method returns the first n elements of the array:
```
ياقوت array.take (3) => \[0 ، 1 ، 2\] ياقوت array.take (3) => \[0 ، 1 ، 2\]
`#### .drop ```
The .drop method returns the elements after n elements of the array: #### .drop
` The .drop method returns the elements after n elements of the array:
```
ياقوت array.drop (3) => \[3 ، 4\] ياقوت array.drop (3) => \[3 ، 4\]
`#### array index ```
You can access a specific element in an array by accessing its index. If the index does not exist in the array, nil will be returned: #### array index
` You can access a specific element in an array by accessing its index. If the index does not exist in the array, nil will be returned:
```
ياقوت مجموعة \[2\] => 2 ياقوت مجموعة \[2\] => 2
مجموعة \[5\] => لا شيء مجموعة \[5\] => لا شيء
`#### .pop ```
The .pop method will permantently remove the last element of an array: #### .pop
` The .pop method will permantently remove the last element of an array:
```
ياقوت array.pop => \[0 ، 1 ، 2 ، 3\] ياقوت array.pop => \[0 ، 1 ، 2 ، 3\]
`#### .shift ```
The .shift method will permantently remove the first element of an array and return this element: #### .shift
` The .shift method will permantently remove the first element of an array and return this element:
```
ياقوت array.shift => 0 ياقوت array.shift => 0
مجموعة مصفوفة => \[1 ، 2 ، 3 ، 4\] مجموعة مصفوفة => \[1 ، 2 ، 3 ، 4\]
`#### .push ```
The .push method will allow you to add an element to the end of an array: #### .push
` The .push method will allow you to add an element to the end of an array:
```
ياقوت array.push (99) => \[0 ، 1 ، 2 ، 3 ، 4 ، 99\] ياقوت array.push (99) => \[0 ، 1 ، 2 ، 3 ، 4 ، 99\]
`#### .unshift ```
The .unshift method will allow you to add an element to the beginning of an array: #### .unshift
` The .unshift method will allow you to add an element to the beginning of an array:
```
الصفيف = \[2 ، 3\] array.unshift (1) => \[1 ، 2 ، 3\] الصفيف = \[2 ، 3\] array.unshift (1) => \[1 ، 2 ، 3\]
`#### .delete ```
The .delete method removes a specified element from an array permanently: #### .delete
` The .delete method removes a specified element from an array permanently:
```
ياقوت array.delete (1) => \[0 ، 2 ، 3 ، 4\] ياقوت array.delete (1) => \[0 ، 2 ، 3 ، 4\]
`#### .delete_at ```
The .delete_at method allows you to permanently remove an element of an array at a specified index: #### .delete_at
` The .delete_at method allows you to permanently remove an element of an array at a specified index:
```
ياقوت array.delete\_at (0) => \[1 ، 2 ، 3 ، 4\] ياقوت array.delete\_at (0) => \[1 ، 2 ، 3 ، 4\]
`#### .reverse ```
The .reverse method reverses the array but does not mutate it (the original array stays as is): #### .reverse
` The .reverse method reverses the array but does not mutate it (the original array stays as is):
```
ياقوت array.reverse => \[4 ، 3 ، 2 ، 1 ، 0\] ياقوت array.reverse => \[4 ، 3 ، 2 ، 1 ، 0\]
`#### .select ```
The .select method iterates over an array and returns a new array that includes any items that return true to the expression provided. #### .select
` The .select method iterates over an array and returns a new array that includes any items that return true to the expression provided.
```
ياقوت الصفيف = \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10\] array.select {| number | رقم> 4} => \[5 ، 6 ، 7 ، 8 ، 9 ، 10\] مجموعة مصفوفة => \[5 ، 6 ، 7 ، 8 ، 9 ، 10\] ياقوت الصفيف = \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10\] array.select {| number | رقم> 4} => \[5 ، 6 ، 7 ، 8 ، 9 ، 10\] مجموعة مصفوفة => \[5 ، 6 ، 7 ، 8 ، 9 ، 10\]
`#### .include? ```
The include? method checks to see if the argument given is included in the array: #### .include?
` The include? method checks to see if the argument given is included in the array:
```
ياقوت الصفيف = \[1 ، 2 ، 3 ، 4 ، 5\] => \[1 ، 2 ، 3 ، 4 ، 5\] array.include؟ (3) => صحيح ياقوت الصفيف = \[1 ، 2 ، 3 ، 4 ، 5\] => \[1 ، 2 ، 3 ، 4 ، 5\] array.include؟ (3) => صحيح
@ -109,33 +124,38 @@ localeTitle: طرق المصفوفة المشتركة
\`\` \`روبي صفيف = \[1 ، 2 ، \[3 ، 4 ، 5\] ، \[6 ، 7\]\] array.flatten => \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7\] \`\` \`روبي صفيف = \[1 ، 2 ، \[3 ، 4 ، 5\] ، \[6 ، 7\]\] array.flatten => \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7\]
`#### .join ```
The .join method returns a string of all the elements of the array separated by a separator parameter. If the separator parameter is nil, the method uses an empty string as a separator between strings. #### .join
` The .join method returns a string of all the elements of the array separated by a separator parameter. If the separator parameter is nil, the method uses an empty string as a separator between strings.
```
ياقوت array.join => "1234" array.join (" _") => "1_ 2 _3_ 4" ياقوت array.join => "1234" array.join (" _") => "1_ 2 _3_ 4"
`#### .each ```
The .each method iterates over each element of the array, allowing you to perform actions on them. #### .each
` The .each method iterates over each element of the array, allowing you to perform actions on them.
```
ياقوت array.each do | element | يضع العنصر النهاية => 0 1 2 3 4 ياقوت array.each do | element | يضع العنصر النهاية => 0 1 2 3 4
`#### .map ```
The .map method is the same as the .collect method. The .map and .collect methods iterate over each element of the array, allowing you to perform actions on them. The .map and .collect methods differ from the .each method in that they return an array containing the transformed elements. #### .map
` The .map method is the same as the .collect method. The .map and .collect methods iterate over each element of the array, allowing you to perform actions on them. The .map and .collect methods differ from the .each method in that they return an array containing the transformed elements.
```
ياقوت array.map {| عنصر | العنصر \* 2} يضع العنصر النهاية => 0 2 4 6 8 ياقوت array.map {| عنصر | العنصر \* 2} يضع العنصر النهاية => 0 2 4 6 8
`#### .uniq ```
The .uniq method takes in an array containing duplicate elements, and returns a copy of the array containing only unique elements--any duplicate elements are removed from the array. #### .uniq
` The .uniq method takes in an array containing duplicate elements, and returns a copy of the array containing only unique elements--any duplicate elements are removed from the array.
```
ياقوت الصفيف = \[1 ، 1 ، 2 ، 2 ، 3 ، 3 ، 3 ، 4 ، 4 ، 4 ، 4 ، 5 ، 6 ، 7 ، 8\] array.uniq => \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8\] ياقوت الصفيف = \[1 ، 1 ، 2 ، 2 ، 3 ، 3 ، 3 ، 4 ، 4 ، 4 ، 4 ، 5 ، 6 ، 7 ، 8\] array.uniq => \[1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8\]
`#### .concat ```
The .concat method appends the elements from an array to the original array. The .concat method can take in multiple arrays as an argument, which will in turn append multiple arrays to the original array. #### .concat
` The .concat method appends the elements from an array to the original array. The .concat method can take in multiple arrays as an argument, which will in turn append multiple arrays to the original array.
```
ياقوت الصفيف = \[0 ، 1 ، 2 ، 3 ، 4\] array.concat (\[5 ، 6 ، 7\] ، \[8 ، 9 ، 10\]) => \[0 ، 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10\] \`\` \` ياقوت الصفيف = \[0 ، 1 ، 2 ، 3 ، 4\] array.concat (\[5 ، 6 ، 7\] ، \[8 ، 9 ، 10\]) => \[0 ، 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10\] \`\` \`

View File

@ -18,23 +18,24 @@ localeTitle: ياقوت
إذا كنت غير معتاد على بعض المفاهيم أعلاه ، فاقرأ ، ولا تقلق. يركز روبي على البساطة والإنتاجية من خلال تركيبه الأنيق الذي يكون طبيعيًا للقراءة والكتابة بسهولة ، مثل: إذا كنت غير معتاد على بعض المفاهيم أعلاه ، فاقرأ ، ولا تقلق. يركز روبي على البساطة والإنتاجية من خلال تركيبه الأنيق الذي يكون طبيعيًا للقراءة والكتابة بسهولة ، مثل:
`# Quick example of Ruby with Object Oriented Programming ```ruby
class Greeter # Quick example of Ruby with Object Oriented Programming
def initialize(name) class Greeter
@name = name.capitalize def initialize(name)
end @name = name.capitalize
end
def salute
puts "Hello #{@name}!" def salute
end puts "Hello #{@name}!"
end end
end
# Create a new object
g = Greeter.new("world") # Create a new object
g = Greeter.new("world")
# Output "Hello World!"
g.salute # Output "Hello World!"
` g.salute
```
## الإصدار ## الإصدار

View File

@ -30,8 +30,9 @@ localeTitle: إدارة إصدارات روبي
هناك نوعان من الأدوات التي تحظى بشعبية كبيرة ، لكن كلاهما وافق على ذلك مشاركة ملف مشترك. العديد من مشاريع Ruby (أو Rails) ستشمل بسيطة ملف `.ruby-version` ، الذي يحدد ببساطة رقم إصدار ، على _سبيل المثال_ : هناك نوعان من الأدوات التي تحظى بشعبية كبيرة ، لكن كلاهما وافق على ذلك مشاركة ملف مشترك. العديد من مشاريع Ruby (أو Rails) ستشمل بسيطة ملف `.ruby-version` ، الذي يحدد ببساطة رقم إصدار ، على _سبيل المثال_ :
`2.4.2 ```
` 2.4.2
```
الأدوات الشائعة لمساعدتك في إدارة إصدار روبي هي: الأدوات الشائعة لمساعدتك في إدارة إصدار روبي هي:
@ -46,15 +47,16 @@ localeTitle: إدارة إصدارات روبي
على سبيل المثال ، قد يكون لديك هذا التسلسل: على سبيل المثال ، قد يكون لديك هذا التسلسل:
`% cd ~/projects/older-project ```shell
% ruby --version % cd ~/projects/older-project
% ruby --version
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16]
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16]
% cd ~/projects/newer-project
% ruby --version % cd ~/projects/newer-project
% ruby --version
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
` ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
```
(هذه الأمثلة من جهاز MacOS) (هذه الأمثلة من جهاز MacOS)

View File

@ -14,10 +14,11 @@ localeTitle: Rubocop
يتم تسليم Rubocop كما جوهرة ، لذلك في مشروع نموذجي يستخدم Bundler لك `Gemfile` إلى قسم التطوير في `Gemfile` الخاص بك: يتم تسليم Rubocop كما جوهرة ، لذلك في مشروع نموذجي يستخدم Bundler لك `Gemfile` إلى قسم التطوير في `Gemfile` الخاص بك:
`group :development do ```
gem rubocop group :development do
end gem rubocop
` end
```
وهذا يعني أن أي شخص يستخدم مشروعك سيكون له نفس الإصدار من Rubocop ، و سيتفق الجميع على أفضل الممارسات الحالية. وهذا يعني أن أي شخص يستخدم مشروعك سيكون له نفس الإصدار من Rubocop ، و سيتفق الجميع على أفضل الممارسات الحالية.
@ -25,15 +26,17 @@ localeTitle: Rubocop
قبل كل التزام ، أرغب في التحقق من أن الشفرة المعدلة حديثًا تتوافق معها معيار commmunity ، ببساطة عن طريق تشغيل: قبل كل التزام ، أرغب في التحقق من أن الشفرة المعدلة حديثًا تتوافق معها معيار commmunity ، ببساطة عن طريق تشغيل:
`rubocop ```
` rubocop
```
سيؤدي ذلك إلى إخراج قائمة بالتحذيرات حول شفرتك. سيؤدي ذلك إلى إخراج قائمة بالتحذيرات حول شفرتك.
يمكن أن يكون من المفيد طلب Rubocop للحصول على مزيد من المساعدة: يمكن أن يكون من المفيد طلب Rubocop للحصول على مزيد من المساعدة:
`rubocop --extra-details --display-cop-names ```
` rubocop --extra-details --display-cop-names
```
(يمكنك إضافة هذه الملفات إلى ملف `.rubocop` لجعلها افتراضية.) (يمكنك إضافة هذه الملفات إلى ملف `.rubocop` لجعلها افتراضية.)
@ -43,20 +46,23 @@ localeTitle: Rubocop
لنفترض أنني كتبت رمزًا جديدًا ؛ قبل أن ألتزم بها ، قد أقرر ذلك تأكد من أنها تلتزم بالمبادئ التوجيهية: لنفترض أنني كتبت رمزًا جديدًا ؛ قبل أن ألتزم بها ، قد أقرر ذلك تأكد من أنها تلتزم بالمبادئ التوجيهية:
`rubocop <my new file> ```shell
` rubocop <my new file>
```
يمكنني تحرير التغييرات المقترحة يدويًا ، أو يمكنني أن أطلب من Rubocop إصلاحها مشاكل طفيفة تلقائيا: يمكنني تحرير التغييرات المقترحة يدويًا ، أو يمكنني أن أطلب من Rubocop إصلاحها مشاكل طفيفة تلقائيا:
`rubocop --auto-correct ```
` rubocop --auto-correct
```
### تشغيل بعض رجال الشرطة فقط ### تشغيل بعض رجال الشرطة فقط
يتم تنفيذ كل المبادئ التوجيهية للمجتمع في "شرطي" Rubocop. عند العمل على قاعدة البيانات القديمة قد تغرق مع التحذيرات عند تقديم Rubocop. في هذه الحالة ، يمكن أن يكون من المفيد تشغيل شرطي واحد فقط عبر مصدر البرنامج ، وتحقق من هذه التغييرات قبل الانتقال إلى المبدأ التوجيهي التالي ، من أجل مثال: يتم تنفيذ كل المبادئ التوجيهية للمجتمع في "شرطي" Rubocop. عند العمل على قاعدة البيانات القديمة قد تغرق مع التحذيرات عند تقديم Rubocop. في هذه الحالة ، يمكن أن يكون من المفيد تشغيل شرطي واحد فقط عبر مصدر البرنامج ، وتحقق من هذه التغييرات قبل الانتقال إلى المبدأ التوجيهي التالي ، من أجل مثال:
`rubocop --auto-correct --only 'Layout/EmptyLineAfterMagicComment' ```
` rubocop --auto-correct --only 'Layout/EmptyLineAfterMagicComment'
```
### تكامل محرر النصوص ### تكامل محرر النصوص

View File

@ -6,43 +6,50 @@ localeTitle: روبي أرايس
يمثل الصفيف قائمة بالقيم. غالباً ما تسمى القيم الفردية "عناصر" الصفيف. لإنشاء صفيف في Ruby ، ​​استخدم الأقواس المربعة والقيم المنفصلة باستخدام الفواصل: يمثل الصفيف قائمة بالقيم. غالباً ما تسمى القيم الفردية "عناصر" الصفيف. لإنشاء صفيف في Ruby ، ​​استخدم الأقواس المربعة والقيم المنفصلة باستخدام الفواصل:
`my_array = [1, 2, 3, 4, 5] ```ruby
` my_array = [1, 2, 3, 4, 5]
```
المثال الأول هو مجموعة من الأرقام ، لكن مصفوفة Ruby يمكن أن تحتوي على قيم من أنواع مختلفة ، حتى المصفوفات الأخرى: المثال الأول هو مجموعة من الأرقام ، لكن مصفوفة Ruby يمكن أن تحتوي على قيم من أنواع مختلفة ، حتى المصفوفات الأخرى:
`mixed_array = [5, "Hello World", true, [1,2,3]] ```ruby
` mixed_array = [5, "Hello World", true, [1,2,3]]
```
يمكنك الوصول إلى عناصر صفيف يحتوي على أقواس مربعة وفهارس رقمية. لاحظ أن العنصر الأول في index 0 ، وليس 1: يمكنك الوصول إلى عناصر صفيف يحتوي على أقواس مربعة وفهارس رقمية. لاحظ أن العنصر الأول في index 0 ، وليس 1:
`mixed_array[0] # 5 ```ruby
mixed_array[1] # "Hello World" mixed_array[0] # 5
mixed_array[2] # true mixed_array[1] # "Hello World"
` mixed_array[2] # true
```
يمكنك التحقق من عدد العناصر التي تحتوي عليها المصفوفة باستخدام طريقة `length` : يمكنك التحقق من عدد العناصر التي تحتوي عليها المصفوفة باستخدام طريقة `length` :
`mixed_array.length # 3 ```ruby
[].length # 0 mixed_array.length # 3
` [].length # 0
```
يمكنك التحقق من العنصر الأول في مصفوفة باستخدام الطريقة `first` : يمكنك التحقق من العنصر الأول في مصفوفة باستخدام الطريقة `first` :
`mixed_array.first # 5 ```ruby
` mixed_array.first # 5
```
يمكنك التحقق من آخر عنصر في مصفوفة باستخدام الطريقة `last` : يمكنك التحقق من آخر عنصر في مصفوفة باستخدام الطريقة `last` :
`mixed_array.last # true ```ruby
` mixed_array.last # true
```
#### روبي لامدا #### روبي لامدا
كما يشار إلى lambda على أنها وظيفة مجهولة. لإنشاء لامدا في Ruby ، ​​يمكنك استخدام البنية التالية: كما يشار إلى lambda على أنها وظيفة مجهولة. لإنشاء لامدا في Ruby ، ​​يمكنك استخدام البنية التالية:
`lambda = lambda {} ```ruby
` lambda = lambda {}
```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -8,38 +8,42 @@ localeTitle: روبي التعليقات
في روبي ، يبدأ تعليق سطر واحد بالحرف `#` ويمتد إلى نهاية السطر. يمكن أن يكون التعليق على السطر الخاص به أو بعد الكود. في روبي ، يبدأ تعليق سطر واحد بالحرف `#` ويمتد إلى نهاية السطر. يمكن أن يكون التعليق على السطر الخاص به أو بعد الكود.
`puts "Learning to code is fun!" ```Ruby
puts "Learning to code is fun!"
# I am a single line comment.
# I am a single line comment.
puts "Ruby is a great language!" # Me too - I am a trailing comment.
` puts "Ruby is a great language!" # Me too - I am a trailing comment.
```
عند التنفيذ ، ينتج البرنامج أعلاه ما يلي: عند التنفيذ ، ينتج البرنامج أعلاه ما يلي:
`Learning to code is fun! ```
Ruby is a great language! Learning to code is fun!
` Ruby is a great language!
```
يمكنك إجراء عدة تعليقات سطر من خلال وضع التعليقات بين `=begin` و `=end` . `=begin` start و `=end` يجب أن تبدأ في بداية السطر ويجب أن يكون `=end` على خط خاص به. يمكنك إجراء عدة تعليقات سطر من خلال وضع التعليقات بين `=begin` و `=end` . `=begin` start و `=end` يجب أن تبدأ في بداية السطر ويجب أن يكون `=end` على خط خاص به.
`=begin ```ruby
I am a multi-line comment =begin
and I can be as long as I please. I am a multi-line comment
See, still going! and I can be as long as I please.
=end See, still going!
=end
puts "Hello World!"
puts "Hello World!"
=begin It's ok to start the comment on the same
line as "=begin" (though it's more readable if =begin It's ok to start the comment on the same
you don't) but you can't put a space or any line as "=begin" (though it's more readable if
text before "=begin" or "=end" and you can't put you don't) but you can't put a space or any
anything on the same line after "=end". text before "=begin" or "=end" and you can't put
=end anything on the same line after "=end".
` =end
```
عند التنفيذ ، ينتج البرنامج أعلاه ما يلي: عند التنفيذ ، ينتج البرنامج أعلاه ما يلي:
`Hello World! ```
` Hello World!
```

View File

@ -6,33 +6,39 @@ localeTitle: روبي هاش
تمثل التجزئة مجموعة من أزواج القيم الرئيسية المميزة. ويسمى أيضا المصفوفات الترابطية. لإنشاء تجزئة في Ruby ، ​​استخدم الأقواس المتعرجة وفصل كل زوج من قيم المفاتيح باستخدام الفاصلة. تمثل التجزئة مجموعة من أزواج القيم الرئيسية المميزة. ويسمى أيضا المصفوفات الترابطية. لإنشاء تجزئة في Ruby ، ​​استخدم الأقواس المتعرجة وفصل كل زوج من قيم المفاتيح باستخدام الفاصلة.
`my_hash = {:key1 => "value", :key2 => "value2"} ```ruby
` my_hash = {:key1 => "value", :key2 => "value2"}
```
يمكنك إنشاء تجزئة بالطرق التالية يمكنك إنشاء تجزئة بالطرق التالية
`my_hash = Hash.new # with empty hash ```ruby
my_hash = {:key1 => "value", :key2 => "value2"} # with key's and value's defined my_hash = Hash.new # with empty hash
` my_hash = {:key1 => "value", :key2 => "value2"} # with key's and value's defined
```
يمكنك الوصول إلى قيمة المفتاح في تجزئة مع الأقواس المربعة والمراجع الرئيسية يمكنك الوصول إلى قيمة المفتاح في تجزئة مع الأقواس المربعة والمراجع الرئيسية
`my_hash[:key1] # value ```ruby
my_hash[:key2] # value2 my_hash[:key1] # value
` my_hash[:key2] # value2
```
يمكنك تعيين مفتاح جديد وقيمة لتجزئة محددة بالفعل يمكنك تعيين مفتاح جديد وقيمة لتجزئة محددة بالفعل
`my_hash[:key3] = "value3" # {:key1=>"value", :key2=>"value2", :key3=>"value3"} ```ruby
` my_hash[:key3] = "value3" # {:key1=>"value", :key2=>"value2", :key3=>"value3"}
```
يمكنك التحقق من عدد عناصر التجزئة في طريقة `length` : يمكنك التحقق من عدد عناصر التجزئة في طريقة `length` :
`my_hash.length # 2 ```ruby
` my_hash.length # 2
```
يمكنك أيضًا إنشاء أعداد صحيحة كمفتاح هاش ، لكن بناء الجملة يختلف عن الصيغة المعتادة يمكنك أيضًا إنشاء أعداد صحيحة كمفتاح هاش ، لكن بناء الجملة يختلف عن الصيغة المعتادة
`my_hash = {1: "value"} # will raise an exception ```ruby
my_hash = {1 => "value"} # will create hash with corresponding key value pair my_hash = {1: "value"} # will raise an exception
` my_hash = {1 => "value"} # will create hash with corresponding key value pair
```

View File

@ -6,42 +6,48 @@ localeTitle: روبي هاشز
التجزئة هي مجموعة من المفاتيح والقيم. يشبه ما يسمى عادةً قاموسًا بلغات أخرى. في روبي ، تشبه التجزئة [صفيفًا](https://raw.githubusercontent.com/freeCodeCamp/guides/master/src/pages/ruby/ruby-arrays/index.md) ، ولكن بدلاً من تخزين قيمة تخزن زوجًا رئيسيًا ذا قيمة. التجزئة هي مجموعة من المفاتيح والقيم. يشبه ما يسمى عادةً قاموسًا بلغات أخرى. في روبي ، تشبه التجزئة [صفيفًا](https://raw.githubusercontent.com/freeCodeCamp/guides/master/src/pages/ruby/ruby-arrays/index.md) ، ولكن بدلاً من تخزين قيمة تخزن زوجًا رئيسيًا ذا قيمة.
`array = ["value"] ```ruby
hash = { "key" => "value" } array = ["value"]
` hash = { "key" => "value" }
```
هناك طريقتان مختلفتان لإنشاء تجزئة جديدة: هناك طريقتان مختلفتان لإنشاء تجزئة جديدة:
`hash1 = {a: 100, b: "200"} ```ruby
hash2 = Hash.new hash1 = {a: 100, b: "200"}
hash3 = Hash.new(0) # with default value set to 0 hash2 = Hash.new
` hash3 = Hash.new(0) # with default value set to 0
```
يمكن للمبرمج بعد ذلك الوصول إلى قيمة تجزئة باستخدام مفتاحه ، بدلاً من الفهرس. يمكن للمبرمج بعد ذلك الوصول إلى قيمة تجزئة باستخدام مفتاحه ، بدلاً من الفهرس.
`array[0] # => "value" ```ruby
hash["key"] # => "value" array[0] # => "value"
` hash["key"] # => "value"
```
وبهذه الطريقة ، يعمل تجزئة مثل القاموس حيث يمكنك البحث عن قيمة من خلال مفتاحه. وبهذه الطريقة ، يعمل تجزئة مثل القاموس حيث يمكنك البحث عن قيمة من خلال مفتاحه.
`dictionary = { "Aardvark" => "a large, nocturnal, burrowing mammal", ```ruby
"Zyzzyva" => "a genus of tropical weevils" } dictionary = { "Aardvark" => "a large, nocturnal, burrowing mammal",
dictionary["Aardvark"] # => "a large, nocturnal, burrowing mammal" "Zyzzyva" => "a genus of tropical weevils" }
dictionary["Zyzzyva"] # => "a genus of tropical weevils" dictionary["Aardvark"] # => "a large, nocturnal, burrowing mammal"
` dictionary["Zyzzyva"] # => "a genus of tropical weevils"
```
يمكنك أيضًا إنشاء تجزئة باستخدام [الرموز](#) كمفاتيح. يمكنك أيضًا إنشاء تجزئة باستخدام [الرموز](#) كمفاتيح.
`hash = { :symbol => "value" } ```ruby
hash[:symbol] # => "value" hash = { :symbol => "value" }
` hash[:symbol] # => "value"
```
بالإضافة إلى ذلك ، إذا كانت جميع المفاتيح الخاصة بك هي [رموز](#) ، فيمكنك كتابة التجزئة في هذا التنسيق البديل ، ولكن يمكنك الوصول إليها بنفس الطريقة: بالإضافة إلى ذلك ، إذا كانت جميع المفاتيح الخاصة بك هي [رموز](#) ، فيمكنك كتابة التجزئة في هذا التنسيق البديل ، ولكن يمكنك الوصول إليها بنفس الطريقة:
`hash = { symbol: "value" } ```ruby
hash[:symbol] # => "value" hash = { symbol: "value" }
` hash[:symbol] # => "value"
```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -16,24 +16,27 @@ localeTitle: طرق روبي
#### طريقة بسيطة #### طريقة بسيطة
`def my_method ```
code goes here def my_method
end code goes here
` end
```
#### معلمة قبول الطريقة #### معلمة قبول الطريقة
`def my_method (param1, param2) ```
param1 + param2 def my_method (param1, param2)
end param1 + param2
` end
```
#### طريقة paramter المعرفة مسبقًا (تُستخدم المعلمات المحددة مسبقًا عند عدم تقديم أي منها) #### طريقة paramter المعرفة مسبقًا (تُستخدم المعلمات المحددة مسبقًا عند عدم تقديم أي منها)
`def my_method (param1 = parameter1, param2 = parameter2) ```
parm1 + parm2 def my_method (param1 = parameter1, param2 = parameter2)
end parm1 + parm2
` end
```
## العودة في أساليب ## العودة في أساليب

View File

@ -10,8 +10,9 @@ localeTitle: روبي على القضبان
يتم تنزيل القضبان بنفس الطريقة مثل أي جوهرة روبي أخرى: باستخدام الأمر `gem install` . قبل تنزيله ، سنحتاج إلى [تنزيل Ruby](https://www.ruby-lang.org) . بعد ذلك ، نحن على بعد 3 كلمات فقط من بداية روبي أون ريلز: يتم تنزيل القضبان بنفس الطريقة مثل أي جوهرة روبي أخرى: باستخدام الأمر `gem install` . قبل تنزيله ، سنحتاج إلى [تنزيل Ruby](https://www.ruby-lang.org) . بعد ذلك ، نحن على بعد 3 كلمات فقط من بداية روبي أون ريلز:
`$ gem install rails ```shell
` $ gem install rails
```
## إعداد قاعدة البيانات ## إعداد قاعدة البيانات
@ -21,31 +22,36 @@ localeTitle: روبي على القضبان
1. بعد تثبيت Ruby on Rails ، من السهل جدًا إنشاء تطبيق جديد تمامًا ، سنحتاج إلى 3 كلمات أخرى: 1. بعد تثبيت Ruby on Rails ، من السهل جدًا إنشاء تطبيق جديد تمامًا ، سنحتاج إلى 3 كلمات أخرى:
`$ rails new your_application_name ```shell
` $ rails new your_application_name
```
* إذا كنت ترغب في استخدام MySQL `shell $ rails new <application_name> -d mysql` * إذا كنت ترغب في استخدام MySQL `shell $ rails new <application_name> -d mysql`
* إذا كنت ترغب في استخدام بوستجرس `shell $ rails new <application_name> -d postgresql` * إذا كنت ترغب في استخدام بوستجرس `shell $ rails new <application_name> -d postgresql`
1. سيقوم هذا الأمر بإنشاء مجلد _باسم _التطبيق_ الخاص بك_ الذي أبلغته في الأمر الأخير. الخطوة التالية هي الانتقال إلى الدليل الجديد الذي أنشأته للتو: 1. سيقوم هذا الأمر بإنشاء مجلد _باسم _التطبيق_ الخاص بك_ الذي أبلغته في الأمر الأخير. الخطوة التالية هي الانتقال إلى الدليل الجديد الذي أنشأته للتو:
`$ cd your_application_name ```shell
` $ cd your_application_name
```
3. احصل على الجواهر والحزم اللازمة قبل تشغيل التطبيق الخاص بك: 3. احصل على الجواهر والحزم اللازمة قبل تشغيل التطبيق الخاص بك:
`$ bundle install ```shell
` $ bundle install
```
4. لتشغيل خادم سكك الحديد ومعرفة ما إذا كان كل شيء يسير على هذا النحو سريعًا أيضًا: 4. لتشغيل خادم سكك الحديد ومعرفة ما إذا كان كل شيء يسير على هذا النحو سريعًا أيضًا:
`$ rails server ```shell
` $ rails server
```
لا يمكن أن يكون الأمر بسيطا بعد الآن! حسنًا ، هذا ليس صحيحًا بنسبة 100٪ ، يمكننا جعله أصغر من خلال تقليل أمر `rails server` إلى: لا يمكن أن يكون الأمر بسيطا بعد الآن! حسنًا ، هذا ليس صحيحًا بنسبة 100٪ ، يمكننا جعله أصغر من خلال تقليل أمر `rails server` إلى:
`$ rails s ```shell
` $ rails s
```
5. الآن ، مع المتصفح المفضل لديك ، انتقل إلى `http://localhost:3000` وستشاهد: "Yay! أنت على القضبان!" 5. الآن ، مع المتصفح المفضل لديك ، انتقل إلى `http://localhost:3000` وستشاهد: "Yay! أنت على القضبان!"

View File

@ -6,22 +6,25 @@ localeTitle: روبي السلسلة الاستيفاء
يوفر الاستيفاء سلسلة صيغة أكثر قابلية للقراءة وموجزة لبناء السلاسل. قد تكون على دراية بالتسلسل عبر الطرق `+` أو `<<` : يوفر الاستيفاء سلسلة صيغة أكثر قابلية للقراءة وموجزة لبناء السلاسل. قد تكون على دراية بالتسلسل عبر الطرق `+` أو `<<` :
`"Hello " + "World!" #=> Hello World ```ruby
"Hello " << "World!" #=> Hello World "Hello " + "World!" #=> Hello World
` "Hello " << "World!" #=> Hello World
```
يوفر الاستيفاء سلسلة طريقة لتضمين رمز Ruby مباشرة في سلسلة: يوفر الاستيفاء سلسلة طريقة لتضمين رمز Ruby مباشرة في سلسلة:
`place = "World" ```ruby
"Hello #{place}!" #=> Hello World! place = "World"
"Hello #{place}!" #=> Hello World!
"4 + 4 is #{4 + 4}" #=> 4 + 4 is 8
` "4 + 4 is #{4 + 4}" #=> 4 + 4 is 8
```
يتم تقييم كل شيء بين `#{` و `}` برمز روبي. للقيام بذلك ، يجب أن يكون محاطًا بالسلسلة علامات اقتباس مزدوجة ( `"` ). يتم تقييم كل شيء بين `#{` و `}` برمز روبي. للقيام بذلك ، يجب أن يكون محاطًا بالسلسلة علامات اقتباس مزدوجة ( `"` ).
ستقوم علامات الاقتباس المفردة بإرجاع السلسلة الصحيحة داخل علامات الاقتباس: ستقوم علامات الاقتباس المفردة بإرجاع السلسلة الصحيحة داخل علامات الاقتباس:
`place = "World" ```ruby
'Hello #{place}!' #=> Hello #{place}! place = "World"
` 'Hello #{place}!' #=> Hello #{place}!
```

View File

@ -92,8 +92,9 @@ _لاحظ أن الحرف الأول يتم تكبيره فقط إذا كان ف
* يستبدل `gsub` كل مرجع للمعلمة الأولى للمعلمة الثانية في سلسلة. * يستبدل `gsub` كل مرجع للمعلمة الأولى للمعلمة الثانية في سلسلة.
`"ruby is cool".gsub("cool", "very cool") #=> "ruby is very cool" ```ruby
` "ruby is cool".gsub("cool", "very cool") #=> "ruby is very cool"
```
* يقبل `gsub` أيضًا الأنماط (مثل _regexp_ ) كمعلمة أولى ، مما يسمح بأشياء مثل: * يقبل `gsub` أيضًا الأنماط (مثل _regexp_ ) كمعلمة أولى ، مما يسمح بأشياء مثل:

View File

@ -10,22 +10,23 @@ localeTitle: روبي الرموز
على سبيل المثال: إذا كان Fred ثابتًا في سياق واحد ، وطريقة في أخرى ، وفئة في الثلث ، فسيكون الرمز: Fred هو نفس الكائن في جميع السياقات الثلاثة. على سبيل المثال: إذا كان Fred ثابتًا في سياق واحد ، وطريقة في أخرى ، وفئة في الثلث ، فسيكون الرمز: Fred هو نفس الكائن في جميع السياقات الثلاثة.
`module One ```ruby
class Fred module One
end class Fred
$f1 = :Fred end
end $f1 = :Fred
module Two end
Fred = 1 module Two
$f2 = :Fred Fred = 1
end $f2 = :Fred
def Fred() end
end def Fred()
$f3 = :Fred end
$f1.object_id #=> 2514190 $f3 = :Fred
$f2.object_id #=> 2514190 $f1.object_id #=> 2514190
$f3.object_id #=> 2514190 $f2.object_id #=> 2514190
` $f3.object_id #=> 2514190
```
## العمل مع الرموز ## العمل مع الرموز
@ -33,31 +34,34 @@ localeTitle: روبي الرموز
حتى الآن رأيناهم كمفتاح في هاش (العمل مع الزنانير في روبي): حتى الآن رأيناهم كمفتاح في هاش (العمل مع الزنانير في روبي):
`person = {:name => "Philip"} ```ruby
` person = {:name => "Philip"}
```
لذا ، فإن أول شيء يمكننا القيام به هو فحص الرمز لمعرفة الفئة التي يستخدمها: لذا ، فإن أول شيء يمكننا القيام به هو فحص الرمز لمعرفة الفئة التي يستخدمها:
`:hello.class ```ruby
=> Symbol :hello.class
=> Symbol
"hello".class
=> String "hello".class
` => String
```
حتى يمكننا أن نرى أن الرموز والسلاسل هي أمثلة لكائنين مختلفين. حتى يمكننا أن نرى أن الرموز والسلاسل هي أمثلة لكائنين مختلفين.
يمكنك الاتصال بأساليب شبيهة `upcase` ، مثل `upcase` ، و `downcase` ، `capitalize` الرموز: يمكنك الاتصال بأساليب شبيهة `upcase` ، مثل `upcase` ، و `downcase` ، `capitalize` الرموز:
`:hello.upcase ```ruby
=> :HELLO :hello.upcase
=> :HELLO
:HELLO.downcase
=> :hello :HELLO.downcase
=> :hello
:hello.capitalize
=> :Hello :hello.capitalize
` => :Hello
```
## لماذا تستخدم رمزًا بدلاً من سلسلة؟ ## لماذا تستخدم رمزًا بدلاً من سلسلة؟
@ -89,16 +93,17 @@ localeTitle: روبي الرموز
فمثلا: فمثلا:
`philip".object_id ```ruby
=> 70288511587360 philip".object_id
"philip".object_id => 70288511587360
=> 70288504327720 "philip".object_id
=> 70288504327720
:philip.object_id
=> 539368 :philip.object_id
:philip.object_id => 539368
=> 539368 :philip.object_id
` => 539368
```
عند إنشاء كائنين سلسلة بنفس القيمة ، يتم التعامل مع هذين العنصرين ككائنين مختلفين. عند إنشاء رمز ، سيستخدم الرجوع إلى الرمز دائمًا نفس الكائن. عند إنشاء كائنين سلسلة بنفس القيمة ، يتم التعامل مع هذين العنصرين ككائنين مختلفين. عند إنشاء رمز ، سيستخدم الرجوع إلى الرمز دائمًا نفس الكائن.
@ -108,14 +113,15 @@ localeTitle: روبي الرموز
all\_symbols => نقر المصفوفة لتبديل المصدر لإرجاع مجموعة من الرموز الموجودة حاليًا في جدول رمز Ruby. all\_symbols => نقر المصفوفة لتبديل المصدر لإرجاع مجموعة من الرموز الموجودة حاليًا في جدول رمز Ruby.
`Symbol.all_symbols.size #=> 903 ```ruby
Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, Symbol.all_symbols.size #=> 903
:chown, :EOFError, :$;, :String, Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink,
:LOCK_SH, :"setuid?", :$<, :chown, :EOFError, :$;, :String,
:default_proc, :compact, :extend, :LOCK_SH, :"setuid?", :$<,
:Tms, :getwd, :$=, :ThreadGroup, :default_proc, :compact, :extend,
:wait2, :$>] :Tms, :getwd, :$=, :ThreadGroup,
` :wait2, :$>]
```
#### معلومات اكثر: #### معلومات اكثر:

View File

@ -8,10 +8,11 @@ localeTitle: مرحبا بالعالم
بعد إنشاء `main.rs` ، قم بإضافة التعليمة البرمجية التالية داخل: بعد إنشاء `main.rs` ، قم بإضافة التعليمة البرمجية التالية داخل:
`fn main() { ```rust
println!("Hello, world!"); fn main() {
} println!("Hello, world!");
` }
```
نجاح باهر كان ذلك سهلاً ، أليس كذلك؟ داخل الملف `main.rs` الجديد ، ما يلي صحيح: نجاح باهر كان ذلك سهلاً ، أليس كذلك؟ داخل الملف `main.rs` الجديد ، ما يلي صحيح:
@ -20,14 +21,16 @@ localeTitle: مرحبا بالعالم
لتنفيذ البرنامج ، يجب عليك أولاً تجميعه: لتنفيذ البرنامج ، يجب عليك أولاً تجميعه:
`$ rustc main.rs ```bash
` $ rustc main.rs
```
ستقوم هذه العملية بإنشاء ملف قابل للتنفيذ في نفس الدليل ، والذي يمكنك بعد ذلك تشغيله: ستقوم هذه العملية بإنشاء ملف قابل للتنفيذ في نفس الدليل ، والذي يمكنك بعد ذلك تشغيله:
`$ ./main ```bash
Hello, world! $ ./main
` Hello, world!
```
تهانينا! لقد كتبت للتو برنامج الصدأ الخاص بك! تهانينا! لقد كتبت للتو برنامج الصدأ الخاص بك!

View File

@ -20,8 +20,9 @@ Rust هي لغة برمجة أنظمة تركز على ثلاثة أهداف: ا
إذا كنت تستخدم نظام التشغيل Linux أو Mac ، فمن الأفضل إجراء عملية تثبيت `rustup` من خلال المحطة الطرفية: إذا كنت تستخدم نظام التشغيل Linux أو Mac ، فمن الأفضل إجراء عملية تثبيت `rustup` من خلال المحطة الطرفية:
`$ curl https://sh.rustup.rs -sSf | sh ```bash
` $ curl https://sh.rustup.rs -sSf | sh
```
سيقوم هذا بتنزيل وتشغيل برنامج نصي على جهازك يقوم بتثبيت الأداة. يضيف برنامج التثبيت تلقائيًا خاصية Rust إلى نظام `PATH` بعد تسجيل الدخول التالي. سيقوم هذا بتنزيل وتشغيل برنامج نصي على جهازك يقوم بتثبيت الأداة. يضيف برنامج التثبيت تلقائيًا خاصية Rust إلى نظام `PATH` بعد تسجيل الدخول التالي.
@ -33,8 +34,9 @@ Rust هي لغة برمجة أنظمة تركز على ثلاثة أهداف: ا
بمجرد تثبيت `rustup` ، يكون التحديث إلى إصدارات أحدث بسيطًا. كل ما تحتاجه للتشغيل هو: بمجرد تثبيت `rustup` ، يكون التحديث إلى إصدارات أحدث بسيطًا. كل ما تحتاجه للتشغيل هو:
`$ rustup update ```bash
` $ rustup update
```
لعرض رقم الإصدار الحالي ، والتزام التجزئة ، وتاريخ التزام مترجم الصدأ ، قم بتشغيل الأمر التالي: لعرض رقم الإصدار الحالي ، والتزام التجزئة ، وتاريخ التزام مترجم الصدأ ، قم بتشغيل الأمر التالي:
@ -46,5 +48,6 @@ Rust هي لغة برمجة أنظمة تركز على ثلاثة أهداف: ا
إلغاء تثبيت الصدأ من النظام سهل كما هو مثبت عليه: إلغاء تثبيت الصدأ من النظام سهل كما هو مثبت عليه:
`$ rustup self uninstall ```bash
` $ rustup self uninstall
```

View File

@ -12,12 +12,13 @@ localeTitle: الحلقات
في ما يلي مثال على برنامج باستخدام `loop` لطباعة الكلمة "مرة أخرى" باستمرار إلى المحطة: في ما يلي مثال على برنامج باستخدام `loop` لطباعة الكلمة "مرة أخرى" باستمرار إلى المحطة:
`fn main() { ```rust
loop { fn main() {
println!("again!"); loop {
} println!("again!");
} }
` }
```
## حلقات شرطية مع `while` ## حلقات شرطية مع `while`
@ -25,15 +26,16 @@ localeTitle: الحلقات
في ما يلي مثال لبرنامج يستخدم `while` العد التنازلي من 5: في ما يلي مثال لبرنامج يستخدم `while` العد التنازلي من 5:
`fn main() { ```rust
let mut number = 5; fn main() {
let mut number = 5;
while number != 0 {
println!("{}", number); while number != 0 {
number = number - 1; println!("{}", number);
} number = number - 1;
} }
` }
```
قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable) . قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable) .
@ -43,14 +45,15 @@ localeTitle: الحلقات
هنا هو برنامج سبيل المثال أن يطبع كل رقم في صفيف إلى المحطة باستخدام `for` : هنا هو برنامج سبيل المثال أن يطبع كل رقم في صفيف إلى المحطة باستخدام `for` :
`fn main() { ```rust
let collection = [15, 7, 2, 6, 9]; fn main() {
let collection = [15, 7, 2, 6, 9];
for element in collection.iter() {
println!("the value is: {}", element); for element in collection.iter() {
} println!("the value is: {}", element);
} }
` }
```
قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable) . قم بتشغيل الكود [هنا](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable) .

View File

@ -64,42 +64,46 @@ localeTitle: بروتوكول OAuth2
طلب تفويض طلب تفويض
`GET /oauth2/authorize?response_type=code ```
&client_id=client123&scope=profile GET /oauth2/authorize?response_type=code
&redirect_uri=https://client.com/callback HTTP/1.1 &client_id=client123&scope=profile
Host: auth.server.com &redirect_uri=https://client.com/callback HTTP/1.1
` Host: auth.server.com
```
`HTTP/1.1 302 Found ```
Location: https://client.com/callback#code=sb8s6doy9bsd9sd&state=abcde HTTP/1.1 302 Found
` Location: https://client.com/callback#code=sb8s6doy9bsd9sd&state=abcde
```
بعد تلقي رمز التفويض ، تقديم طلب خادم التفويض مع رمز ، بعد تلقي رمز التفويض ، تقديم طلب خادم التفويض مع رمز ،
`POST /oauth2/token HTTP/1.1 ```
Host: auth.server.com POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded Host: auth.server.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=sb8s6doy9bsd9sd grant_type=authorization_code
&redirect_uri=https://client.com/callback &code=sb8s6doy9bsd9sd
&client_id=client123 &redirect_uri=https://client.com/callback
&client_secret=secret &client_id=client123
&scope=profile &client_secret=secret
` &scope=profile
```
استجابة استجابة
`HTTP/1.1 200 OK ```
Content-Type: application/json;charset=UTF-8 HTTP/1.1 200 OK
Cache-Control: no-store Content-Type: application/json;charset=UTF-8
Pragma: no-cache Cache-Control: no-store
{ Pragma: no-cache
"access_token":"gsi8d6fosb9d6fos6df", {
"token_type":"bearer", "access_token":"gsi8d6fosb9d6fos6df",
"expires_in":3600 "token_type":"bearer",
} "expires_in":3600
` }
```
#### التدفق الضمني #### التدفق الضمني
@ -115,15 +119,17 @@ localeTitle: بروتوكول OAuth2
نموذج الكود: نموذج الكود:
`GET /oauth2/authorize?response_type=token ```
&client_id=client123 GET /oauth2/authorize?response_type=token
&redirect_uri=https://client.com/callback HTTP/1.1 &client_id=client123
Host: auth.server.com &redirect_uri=https://client.com/callback HTTP/1.1
` Host: auth.server.com
```
`HTTP/1.1 302 Found ```
Location: https://client.com/callback#access_token=98y2b38&token_type=bearer&expires_in=3600&state=abcde HTTP/1.1 302 Found
` Location: https://client.com/callback#access_token=98y2b38&token_type=bearer&expires_in=3600&state=abcde
```
#### بيانات اعتماد مالك المورد #### بيانات اعتماد مالك المورد
@ -139,14 +145,15 @@ localeTitle: بروتوكول OAuth2
نموذج الكود: نموذج الكود:
`POST /oauth2/token HTTP/1.1 ```
Host: auth.server.com POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded Host: auth.server.com
Content-Type: application/x-www-form-urlencoded
grant_type=password
&username=john grant_type=password
&password=abcde &username=john
` &password=abcde
```
#### بيانات اعتماد العميل التدفق #### بيانات اعتماد العميل التدفق
@ -162,14 +169,15 @@ localeTitle: بروتوكول OAuth2
نموذج الكود: نموذج الكود:
`POST /oauth2/token HTTP/1.1 ```
Host: auth.server.com POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded Host: auth.server.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=client123 grant_type=client_credentials
&client_secret=xyz123 &client_id=client123
` &client_secret=xyz123
```
### المراجع ### المراجع

View File

@ -12,33 +12,36 @@ _(يتم كتابة القصاصات التالية في C # لـ MySQL ، لك
### المشكلة ### المشكلة
`public void RetrieveEmployeeInfo(string username) ```csharp
{ public void RetrieveEmployeeInfo(string username)
using (var connection = new MySqlConnection("valid_connection_string")) {
{ using (var connection = new MySqlConnection("valid_connection_string"))
var query = "SELECT * FROM EMPLOYEES WHERE USERNAME = '" + username + "'"; {
var query = "SELECT * FROM EMPLOYEES WHERE USERNAME = '" + username + "'";
using (var command = new MySqlCommand(query, connection))
{ using (var command = new MySqlCommand(query, connection))
var reader = command.ExecuteReader(); {
while (reader.Read()) var reader = command.ExecuteReader();
{ while (reader.Read())
// do something with the results of your query, like display the employee {
} // do something with the results of your query, like display the employee
} }
} }
} }
` }
```
للوهلة الأولى ، قد يبدو ذلك غير مؤذٍ. إذا قام المستخدم بكتابة "JDOE" في برنامجك ، وتم تمريره إلى هذه الوظيفة ، فسوف ينتهي بك الأمر تنفيذ استعلام كالتالي: للوهلة الأولى ، قد يبدو ذلك غير مؤذٍ. إذا قام المستخدم بكتابة "JDOE" في برنامجك ، وتم تمريره إلى هذه الوظيفة ، فسوف ينتهي بك الأمر تنفيذ استعلام كالتالي:
`SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE'; ```sql
` SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE';
```
تصبح المشكلة أكثر وضوحًا عندما تفكر في ما يحدث إذا _لم يقم_ المستخدم بكتابة ما تتوقعه. ماذا لو `JDOE'; DROP TABLE EMPLOYEES; --` شيئًا مثل `JDOE'; DROP TABLE EMPLOYEES; --` ؟ تبدو سلسلة "طلب البحث" الآن مثل هذه ، والتي ستحدد معلومات الموظف ، ثم تحذف جدول EMPLOYEES بأكمله! تصبح المشكلة أكثر وضوحًا عندما تفكر في ما يحدث إذا _لم يقم_ المستخدم بكتابة ما تتوقعه. ماذا لو `JDOE'; DROP TABLE EMPLOYEES; --` شيئًا مثل `JDOE'; DROP TABLE EMPLOYEES; --` ؟ تبدو سلسلة "طلب البحث" الآن مثل هذه ، والتي ستحدد معلومات الموظف ، ثم تحذف جدول EMPLOYEES بأكمله!
`SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE'; DROP TABLE EMPLOYEES; --' ```sql
` SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE'; DROP TABLE EMPLOYEES; --'
```
### الحل ### الحل
@ -66,7 +69,8 @@ _(يتم كتابة القصاصات التالية في C # لـ MySQL ، لك
الآن ما يحدث إذا كان المستخدم `JDOE'; DROP TABLE EMPLOYEES; --` في `JDOE'; DROP TABLE EMPLOYEES; --` ؟ وينتهي برنامجنا بتنفيذ استعلام مثل هذا ، والعثور على أي موظف اسمه الحقيقي يطابق هذا الإدخال ، ببساطة إرجاع أية سجلات. الآن ما يحدث إذا كان المستخدم `JDOE'; DROP TABLE EMPLOYEES; --` في `JDOE'; DROP TABLE EMPLOYEES; --` ؟ وينتهي برنامجنا بتنفيذ استعلام مثل هذا ، والعثور على أي موظف اسمه الحقيقي يطابق هذا الإدخال ، ببساطة إرجاع أية سجلات.
`SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE\'; DROP TABLE EMPLOYEES; --' ```sql
` SELECT * FROM EMPLOYEES WHERE USERNAME = 'JDOE\'; DROP TABLE EMPLOYEES; --'
```
بغض النظر عن اللغة أو قاعدة البيانات التي تستخدمها ، إذا كنت تفكر في الاستعلام عن قاعدة البيانات باستخدام مدخلات المستخدم ، فتحقق من الوثائق لمعرفة الطريقة المناسبة لإضفاء طابع المعلمة على الاستعلامات. بغض النظر عن اللغة أو قاعدة البيانات التي تستخدمها ، إذا كنت تفكر في الاستعلام عن قاعدة البيانات باستخدام مدخلات المستخدم ، فتحقق من الوثائق لمعرفة الطريقة المناسبة لإضفاء طابع المعلمة على الاستعلامات.

View File

@ -45,23 +45,25 @@ localeTitle: مسح
فمثلا: فمثلا:
`ping <target_ip_address> -c <number_of_packets_to_send> ```
ping 10.10.0.1 -c 4 ping <target_ip_address> -c <number_of_packets_to_send>
` ping 10.10.0.1 -c 4
```
إذا كان النظام الهدف على قيد الحياة ، يجب أن تحصل على رد ظهر يبدو مشابهاً أدناه. إذا كان النظام الهدف على قيد الحياة ، يجب أن تحصل على رد ظهر يبدو مشابهاً أدناه.
`Pinging 10.10.0.1 with 32 bytes of data: ```
Pinging 10.10.0.1 with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time=26ms TTL=240
Reply from 10.0.0.1: bytes=32 time=26ms TTL=240 Reply from 10.0.0.1: bytes=32 time=26ms TTL=240
Reply from 10.0.0.1: bytes=32 time=26ms TTL=240 Reply from 10.0.0.1: bytes=32 time=26ms TTL=240
Reply from 10.0.0.1: bytes=32 time=26ms TTL=240 Reply from 10.0.0.1: bytes=32 time=26ms TTL=240
Ping statistics for 10.10.0.1: Reply from 10.0.0.1: bytes=32 time=26ms TTL=240
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Ping statistics for 10.10.0.1:
Approximate round trip times in milliseconds: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 26ms, Maximum = 26ms, Average = 26ms Approximate round trip times in milliseconds:
` Minimum = 26ms, Maximum = 26ms, Average = 26ms
```
* يشير **الرد من** أن حزمة طلب ارتداد ICMP الخاصة بنا قد تم استلامها في حزمة رد ICMP Echo تم إرسالها مرة أخرى. * يشير **الرد من** أن حزمة طلب ارتداد ICMP الخاصة بنا قد تم استلامها في حزمة رد ICMP Echo تم إرسالها مرة أخرى.
* **Bytes = 32** يخبرنا أن حجم الحزمة التي تم إرسالها. * **Bytes = 32** يخبرنا أن حجم الحزمة التي تم إرسالها.

View File

@ -20,11 +20,12 @@ localeTitle: إخفاء المعلومات
قد يبدأ بشيء مثل: قد يبدأ بشيء مثل:
`10010101 00001101 11001001 ```
10010110 00001111 11001010 10010101 00001101 11001001
10011111 00010000 11001011 10010110 00001111 11001010
... 10011111 00010000 11001011
` ...
```
ويطلق على أبسط طريقة لإخفاء البيانات داخل ملف الصورة إدخالاً بتات أقل دلالة (LSB). في هذه الطريقة ، يمكننا أخذ التمثيل الثنائي _للبيانات_ المخفية الكتابة فوق LSB لكل بايت داخل_ صورة _الغلاف_ . إذا كنا نستخدم ألوان 24 بت ، فإن مقدار التغيير سيكون ضئيلاً ولا يمكن تمييزه عن العين البشرية. ويطلق على أبسط طريقة لإخفاء البيانات داخل ملف الصورة إدخالاً بتات أقل دلالة (LSB). في هذه الطريقة ، يمكننا أخذ التمثيل الثنائي _للبيانات_ المخفية الكتابة فوق LSB لكل بايت داخل_ صورة _الغلاف_ . إذا كنا نستخدم ألوان 24 بت ، فإن مقدار التغيير سيكون ضئيلاً ولا يمكن تمييزه عن العين البشرية.

View File

@ -62,28 +62,31 @@ UI الدلالي `1.x` صدر لأول مرة في نوفمبر 2014 مع كس
في دليل المشروع الخاص بك ، قم بتثبيت gulp عالميًا باستخدام npm في دليل المشروع الخاص بك ، قم بتثبيت gulp عالميًا باستخدام npm
`npm install -g gulp ```
` npm install -g gulp
```
تثبيت واجهة المستخدم الدلالية تثبيت واجهة المستخدم الدلالية
`npm install semantic-ui --save ```
cd semantic/ npm install semantic-ui --save
gulp build cd semantic/
` gulp build
```
تضمين في HTML تضمين في HTML
` ```html
<link rel="stylesheet" type="text/css" href="semantic/dist/semantic.min.css"> <link rel="stylesheet" type="text/css" href="semantic/dist/semantic.min.css">
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js"></script> <script src="semantic/dist/semantic.min.js"></script>
` ```
تحديث عن طريق npm تحديث عن طريق npm
`npm update ```
` npm update
```
3. **التكامل مع الأطر الأخرى** 3. **التكامل مع الأطر الأخرى**

View File

@ -16,15 +16,17 @@ localeTitle: أزرار واجهة المستخدم الدلالية
معيار واجهة المستخدم الدلالي زر معيار واجهة المستخدم الدلالي زر
`<button class="ui button">Standard Button</button> ```
` <button class="ui button">Standard Button</button>
```
* التركيز على زر * التركيز على زر
زر مع مستوى مختلف من التركيز زر مع مستوى مختلف من التركيز
`<button class="ui primary button"> ```
` <button class="ui primary button">
```
تعتبر فئات التركيز الأخرى `secondary` `positive` `negative` تعتبر فئات التركيز الأخرى `secondary` `positive` `negative`
@ -32,11 +34,12 @@ localeTitle: أزرار واجهة المستخدم الدلالية
زر مع الرسوم المتحركة ، تظهر محتويات مخفية زر مع الرسوم المتحركة ، تظهر محتويات مخفية
`<div class="ui animated fade button" tabindex="0"> ```
<div class="visible content">Sign-up for a Pro account</div> <div class="ui animated fade button" tabindex="0">
<div class="hidden content">$12.99 a month</div> <div class="visible content">Sign-up for a Pro account</div>
</div> <div class="hidden content">$12.99 a month</div>
` </div>
```
خاصية `tabindex="0"` أعلاه تجعل لوحة مفاتيح الأزرار `tabindex="0"` ، حيث أن العلامة `<button>` لم يتم استخدامها. خاصية `tabindex="0"` أعلاه تجعل لوحة مفاتيح الأزرار `tabindex="0"` ، حيث أن العلامة `<button>` لم يتم استخدامها.
@ -44,11 +47,12 @@ localeTitle: أزرار واجهة المستخدم الدلالية
زر بجانب علامة زر بجانب علامة
`<div class="ui labeled button" tabindex="0"> ```
<div class="ui button"><i class="heart icon"></i> Like</div> <div class="ui labeled button" tabindex="0">
<a class="ui basic label">2,048</a> <div class="ui button"><i class="heart icon"></i> Like</div>
</div> <a class="ui basic label">2,048</a>
` </div>
```
يتم استخدام العنصر `<i>` لتحديد رمز ، هنا هو رمز قلب `<i class="heart icon"></i>` إلى جانب العلامة الأساسية `<a class="ui basic label">2,048</a>` يتم استخدام العنصر `<i>` لتحديد رمز ، هنا هو رمز قلب `<i class="heart icon"></i>` إلى جانب العلامة الأساسية `<a class="ui basic label">2,048</a>`
@ -56,10 +60,11 @@ localeTitle: أزرار واجهة المستخدم الدلالية
يمكن أن يكون زر واجهة المستخدم الدلالية مجرد رمز يمكن أن يكون زر واجهة المستخدم الدلالية مجرد رمز
`<button class="ui icon button"> ```
<i class="camera icon"></i> <button class="ui icon button">
</button> <i class="camera icon"></i>
` </button>
```
ما سبق هو مجرد رمز الكاميرا ما سبق هو مجرد رمز الكاميرا
@ -67,37 +72,41 @@ localeTitle: أزرار واجهة المستخدم الدلالية
يمكن أن توجد أزرار واجهة المستخدم الدلالية في مجموعة يمكن أن توجد أزرار واجهة المستخدم الدلالية في مجموعة
`<div class="ui buttons"> ```
<button class="ui button">One</button> <div class="ui buttons">
<button class="ui button">Two</button> <button class="ui button">One</button>
<button class="ui button">Three</button> <button class="ui button">Two</button>
</div> <button class="ui button">Three</button>
` </div>
```
#### يحتوى #### يحتوى
يمكن أن تحتوي أزرار واجهة المستخدم الدلالية على شرطية يمكن أن تحتوي أزرار واجهة المستخدم الدلالية على شرطية
`<div class="ui buttons"> ```
<button class="ui positive button">Yes</button> <div class="ui buttons">
<div class="or" data-text="or"></div> <button class="ui positive button">Yes</button>
<button class="ui negative button">No</button> <div class="or" data-text="or"></div>
</div> <button class="ui negative button">No</button>
` </div>
```
#### تنص على #### تنص على
يمكن أن توجد أزرار واجهة المستخدم الدلالية في حالات مختلفة ، `active` ، `disabled` ، `loading` . ببساطة إضافة اسم الدولة إلى `class` سمة `of` \`العنصر. يمكن أن توجد أزرار واجهة المستخدم الدلالية في حالات مختلفة ، `active` ، `disabled` ، `loading` . ببساطة إضافة اسم الدولة إلى `class` سمة `of` \`العنصر.
`<button class="ui loading button">Loading</button> ```
` <button class="ui loading button">Loading</button>
```
#### الاختلافات #### الاختلافات
توجد أزرار UI الدلالي في مجموعة متنوعة من الأحجام، `mini` ، `tiny` ، `small` ، `medium` ، `large` ، `big` ، `huge` ، و `massive` . توجد أزرار UI الدلالي في مجموعة متنوعة من الأحجام، `mini` ، `tiny` ، `small` ، `medium` ، `large` ، `big` ، `huge` ، و `massive` .
`<button class="ui massive button">Massive Button</button> ```
` <button class="ui massive button">Massive Button</button>
```
هناك الكثير حول أزرار UI الدلالية ، قم بزيارة الرابط المقدم في قسم "مزيد من المعلومات" لمعرفة المزيد. هناك الكثير حول أزرار UI الدلالية ، قم بزيارة الرابط المقدم في قسم "مزيد من المعلومات" لمعرفة المزيد.

View File

@ -8,62 +8,63 @@ localeTitle: باني
هنا مثال على تنفيذ Builder Pattern في Python3. هنا مثال على تنفيذ Builder Pattern في Python3.
`# Builder ```python
class CourseBuilder(object): # Builder
def __init__(self, teacher): class CourseBuilder(object):
self.teacher = teacher def __init__(self, teacher):
self.teacher = teacher
def build_course(self):
self.teacher.provide_homework() def build_course(self):
self.teacher.provide_exam() self.teacher.provide_homework()
return self.teacher.course self.teacher.provide_exam()
return self.teacher.course
# Teacher
class Teacher(object): # Teacher
def __init__(self, name=None): class Teacher(object):
self.name = name def __init__(self, name=None):
self.course = Course() self.name = name
self.course = Course()
def provide_homework(self):
raise NotImplementedError def provide_homework(self):
raise NotImplementedError
def provide_exam(self):
raise NotImplementedError def provide_exam(self):
raise NotImplementedError
class MathTeacher(Teacher):
def provide_homework(self): class MathTeacher(Teacher):
self.course.homework = 'This is Math homework provided by {}.'.format(self.name) def provide_homework(self):
self.course.homework = 'This is Math homework provided by {}.'.format(self.name)
def provide_exam(self):
self.course.exam = 'This is Math exam tested by {}.'.format(self.name) def provide_exam(self):
self.course.exam = 'This is Math exam tested by {}.'.format(self.name)
class HistoryTeacher(Teacher):
def provide_homework(self): class HistoryTeacher(Teacher):
self.course.homework = 'This is History homework provided by {}.'.format(self.name) def provide_homework(self):
self.course.homework = 'This is History homework provided by {}.'.format(self.name)
def provide_exam(self):
self.course.exam = 'This is History exam tested by {}.'.format(self.name) def provide_exam(self):
self.course.exam = 'This is History exam tested by {}.'.format(self.name)
# Target objects to be produced
class Course(object): # Target objects to be produced
def __init__(self): class Course(object):
self.homework = None def __init__(self):
self.exam = None self.homework = None
self.exam = None
def __str__(self):
return 'Homework: {}\nExam: {}\n'.format(self.homework, self.exam) def __str__(self):
return 'Homework: {}\nExam: {}\n'.format(self.homework, self.exam)
math_course = CourseBuilder(MathTeacher('Harry')).build_course()
print(math_course) math_course = CourseBuilder(MathTeacher('Harry')).build_course()
>>> Homework: This is Math homework provided by Harry. print(math_course)
>>> Exam: This is Math exam tested by Harry. >>> Homework: This is Math homework provided by Harry.
>>> Exam: This is Math exam tested by Harry.
history_course = CourseBuilder(HistoryTeacher('Potter')).build_course()
print(history_course) history_course = CourseBuilder(HistoryTeacher('Potter')).build_course()
>>> Homework: This is History homework provided by Potter. print(history_course)
>>> Exam: This is History exam tested by Potter. >>> Homework: This is History homework provided by Potter.
` >>> Exam: This is History exam tested by Potter.
```

View File

@ -8,32 +8,33 @@ localeTitle: مزخرف
هنا مثال على تنفيذ Decorator في Python3. هنا مثال على تنفيذ Decorator في Python3.
`class MyText(object): ```python
def __init__(self, text=''): class MyText(object):
self.text = text def __init__(self, text=''):
self.text = text
def __str__(self):
return 'This is {}'.format(self.text) def __str__(self):
return 'This is {}'.format(self.text)
class BracketDecorator(object):
def __init__(self, decoratee): class BracketDecorator(object):
self._decoratee = decoratee def __init__(self, decoratee):
self._decoratee = decoratee
def __str__(self):
return '({})'.format(self._decoratee) def __str__(self):
return '({})'.format(self._decoratee)
class QuoteDecorator(object):
def __init__(self, decoratee): class QuoteDecorator(object):
self._decoratee = decoratee def __init__(self, decoratee):
self._decoratee = decoratee
def __str__(self):
return '\"{}\"'.format(self._decoratee) def __str__(self):
return '\"{}\"'.format(self._decoratee)
print(BracketDecorator(MyText('apple')))
>>> (This is apple) print(BracketDecorator(MyText('apple')))
print(QuoteDecorator(MyText('banana'))) >>> (This is apple)
>>> "This is banana" print(QuoteDecorator(MyText('banana')))
` >>> "This is banana"
```

View File

@ -13,8 +13,9 @@ localeTitle: مصنع
\`\` \` \`\` \`
الواجهة العامة Animal { الفراغ الحديث () ؛ } الواجهة العامة Animal { الفراغ الحديث () ؛ }
`We now need to have "concrete classes" - classes which implement our interface and define the associated functions/ variables. ```
` We now need to have "concrete classes" - classes which implement our interface and define the associated functions/ variables.
```
`public class Dog implements Animal { `public class Dog implements Animal {
@ -34,8 +35,9 @@ localeTitle: مصنع
} }
` `
`We now define our "AnimalFactory" - the class which will handle the creation of these classes. ```
` We now define our "AnimalFactory" - the class which will handle the creation of these classes.
```
`public class AnimalFactory { `public class AnimalFactory {
@ -59,12 +61,13 @@ localeTitle: مصنع
cat.talk(); cat.talk();
` `
`Here we can see that the class with this instance of "Cat" doesn't really know which animal it has. But this doesn't matter - because all the classes the factory creates are concrete classes of the same interface, the parent class doesn't need to know the exact class it is using. ```
Here we can see that the class with this instance of "Cat" doesn't really know which animal it has. But this doesn't matter - because all the classes the factory creates are concrete classes of the same interface, the parent class doesn't need to know the exact class it is using.
## Factory in Python3
We can implement a Factory easily with static methods. ## Factory in Python3
` We can implement a Factory easily with static methods.
```
الثعبان فئة الشراب (الكائن): def **init** (self، name، price = None): self.name = الاسم self.price = السعر الثعبان فئة الشراب (الكائن): def **init** (self، name، price = None): self.name = الاسم self.price = السعر

View File

@ -92,32 +92,34 @@ Singleton هو نمط تصميم غالبًا ما يستخدم في Android. ي
يمكننا استخدام metaclass لتطبيق Singleton في Python3. يمكننا استخدام metaclass لتطبيق Singleton في Python3.
`class Singleton(type): ```python
# Mapping from a class to its singleton instance class Singleton(type):
_instances = {} # Mapping from a class to its singleton instance
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in Singleton._instances: def __call__(cls, *args, **kwargs):
Singleton._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) if cls not in Singleton._instances:
Singleton._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return Singleton._instances[cls]
return Singleton._instances[cls]
class MyClass(metaclass=Singleton):
pass class MyClass(metaclass=Singleton):
` pass
```
### اختبارات ### اختبارات
`obj_0 = MyClass() ```python
obj_1 = MyClass() obj_0 = MyClass()
obj_1 = MyClass()
In [2]: obj_0
Out[2]: <__main__.MyClass at 0x111130da0> In [2]: obj_0
Out[2]: <__main__.MyClass at 0x111130da0>
In [3]: obj_1
Out[3]: <__main__.MyClass at 0x111130da0> In [3]: obj_1
` Out[3]: <__main__.MyClass at 0x111130da0>
```
## سينجلتون في دائرة الرقابة الداخلية ## سينجلتون في دائرة الرقابة الداخلية

View File

@ -30,10 +30,11 @@ localeTitle: برمجة وظيفية
في ما يلي مثال على `map` : في ما يلي مثال على `map` :
`const myList = [6, 3, 5, 29]; ```javascript
const myList = [6, 3, 5, 29];
let squares = myList.map(num => num * num); // [36, 9, 25, 841]
` let squares = myList.map(num => num * num); // [36, 9, 25, 841]
```
### معلومات اكثر: ### معلومات اكثر:

View File

@ -20,21 +20,23 @@ localeTitle: اختبارات الوحدة
افترض أن هناك وظيفة مكتوبة في ملف **add.js** افترض أن هناك وظيفة مكتوبة في ملف **add.js**
`var add = function(number1, number2){ ```javascript
return number1 + number2; var add = function(number1, number2){
} return number1 + number2;
` }
```
الآن ، من أجل كتابة اختبار الوحدة لهذه الوظيفة تحديدًا ، يمكننا استخدام أدوات الاختبار مثل [mocha](http://mochajs.org/) الآن ، من أجل كتابة اختبار الوحدة لهذه الوظيفة تحديدًا ، يمكننا استخدام أدوات الاختبار مثل [mocha](http://mochajs.org/)
`const mocha = require('mocha') ```javascript
const chai = require('chai') // It is an assertion library const mocha = require('mocha')
describe('Test to check add function', function(){ const chai = require('chai') // It is an assertion library
it('should add two numbers', function(){ describe('Test to check add function', function(){
(add(2,3)).should.equal(5) //Checking that 2+3 should equal 5 using the given add function it('should add two numbers', function(){
}); (add(2,3)).should.equal(5) //Checking that 2+3 should equal 5 using the given add function
}); });
` });
```
### التطوير المدفوع بالاختبارات ### التطوير المدفوع بالاختبارات

View File

@ -8,46 +8,50 @@ localeTitle: الأسماء المستعارة SQL
يمكنك استخدام AS لتعيين اسم لعمود البيانات الذي تقوم بتحديده أو الذي تم حسابه. يمكنك استخدام AS لتعيين اسم لعمود البيانات الذي تقوم بتحديده أو الذي تم حسابه.
`SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table ```sql
` SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table
```
هذه النتائج في الإخراج على النحو التالي. هذه النتائج في الإخراج على النحو التالي.
`+-------------+------------------------+ ```text
| AgeOfServer | NonWarrantyPeriod | +-------------+------------------------+
+-------------+------------------------+ | AgeOfServer | NonWarrantyPeriod |
| 36 | 24 | +-------------+------------------------+
| 24 | 12 | | 36 | 24 |
| 61 | 49 | | 24 | 12 |
| 12 | 0 | | 61 | 49 |
| 6 | -6 | | 12 | 0 |
| 0 | -12 | | 6 | -6 |
| 36 | 24 | | 0 | -12 |
| 36 | 24 | | 36 | 24 |
| 24 | 12 | | 36 | 24 |
+-------------+------------------------+ | 24 | 12 |
` +-------------+------------------------+
```
يمكنك أيضًا استخدام AS لتعيين اسم لجدول لتسهيل الرجوع إليه في الصلات. يمكنك أيضًا استخدام AS لتعيين اسم لجدول لتسهيل الرجوع إليه في الصلات.
`SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust ```sql
SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust
JOIN order_table AS ord ON cust.cust_number = ord.cust_number
` JOIN order_table AS ord ON cust.cust_number = ord.cust_number
```
هذه النتائج في الإخراج على النحو التالي. هذه النتائج في الإخراج على النحو التالي.
`+-------------+------------+-----------+-----------------+--------------+ ```text
| product | ord_number | price | cust_name | cust_number | +-------------+------------+-----------+-----------------+--------------+
+-------------+------------+-----------+-----------------+--------------+ | product | ord_number | price | cust_name | cust_number |
| RAM | 12345 | 124 | John Smith | 20 | +-------------+------------+-----------+-----------------+--------------+
| CPU | 12346 | 212 | Mia X | 22 | | RAM | 12345 | 124 | John Smith | 20 |
| USB | 12347 | 49 | Elise Beth | 21 | | CPU | 12346 | 212 | Mia X | 22 |
| Cable | 12348 | 0 | Paul Fort | 19 | | USB | 12347 | 49 | Elise Beth | 21 |
| Mouse | 12349 | 66 | Nats Back | 15 | | Cable | 12348 | 0 | Paul Fort | 19 |
| Laptop | 12350 | 612 | Mel S | 36 | | Mouse | 12349 | 66 | Nats Back | 15 |
| Keyboard| 12351 | 24 | George Z | 95 | | Laptop | 12350 | 612 | Mel S | 36 |
| Keyboard| 12352 | 24 | Ally B | 55 | | Keyboard| 12351 | 24 | George Z | 95 |
| Air | 12353 | 12 | Maria Trust | 11 | | Keyboard| 12352 | 24 | Ally B | 55 |
+-------------+------------+-----------+-----------------+--------------+ | Air | 12353 | 12 | Maria Trust | 11 |
` +-------------+------------+-----------+-----------------+--------------+
```

View File

@ -10,25 +10,28 @@ localeTitle: مزود والمشغل
في ما يلي جدول الطالب بدون شرط WHERE: في ما يلي جدول الطالب بدون شرط WHERE:
`select * from student; ```sql
` select * from student;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator01.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator01.JPG?raw=true)
الآن تتم إضافة عبارة WHERE لعرض طلاب البرمجة فقط: الآن تتم إضافة عبارة WHERE لعرض طلاب البرمجة فقط:
`select * from student ```sql
where programOfStudy = 'Programming'; select * from student
` where programOfStudy = 'Programming';
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator02.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator02.JPG?raw=true)
الآن يتم تحديث جملة WHERE بـ AND لعرض نتائج لطلاب البرمجة التي يكون لها أيضًا درجة SAT أكبر من 800: الآن يتم تحديث جملة WHERE بـ AND لعرض نتائج لطلاب البرمجة التي يكون لها أيضًا درجة SAT أكبر من 800:
`select * from student ```sql
where programOfStudy = 'Programming' select * from student
and sat_score > 800; where programOfStudy = 'Programming'
` and sat_score > 800;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator03.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/and_operator03.JPG?raw=true)

View File

@ -8,16 +8,18 @@ localeTitle: دالة Avg SQL
هنا هو بناء الجملة لاستخدام الوظيفة: هنا هو بناء الجملة لاستخدام الوظيفة:
`select groupingField, avg(num_field) ```sql
from table1 select groupingField, avg(num_field)
group by groupingField from table1
` group by groupingField
```
إليك مثال على ذلك باستخدام جدول الطالب: إليك مثال على ذلك باستخدام جدول الطالب:
`select studentID, FullName, avg(sat_score) ```sql
from student select studentID, FullName, avg(sat_score)
group by studentID, FullName; from student
` group by studentID, FullName;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/avg_function01.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/avg_function01.JPG?raw=true)

View File

@ -14,10 +14,11 @@ localeTitle: مزود بين المشغل
هنا هو بناء الجملة لاستخدام الدالة في جملة WHERE: هنا هو بناء الجملة لاستخدام الدالة في جملة WHERE:
`select field1, testField ```sql
from table1 select field1, testField
where testField between min and max from table1
` where testField between min and max
```
في ما يلي مثال على استخدام جدول الطالب وعبارة WHERE: في ما يلي مثال على استخدام جدول الطالب وعبارة WHERE:
@ -35,12 +36,13 @@ localeTitle: مزود بين المشغل
في ما يلي مثال على ذلك باستخدام جدول أموال الحملة والعبارة الفرعية. سيؤدي هذا إلى إرجاع صفوف يتراوح فيها مجموع التبرعات للمرشح بين 3 ملايين و 18 مليون دولار استنادًا إلى شرط HAVING في الجزء GROUP BY من البيان. المزيد عن التجميع في هذا الدليل. في ما يلي مثال على ذلك باستخدام جدول أموال الحملة والعبارة الفرعية. سيؤدي هذا إلى إرجاع صفوف يتراوح فيها مجموع التبرعات للمرشح بين 3 ملايين و 18 مليون دولار استنادًا إلى شرط HAVING في الجزء GROUP BY من البيان. المزيد عن التجميع في هذا الدليل.
`select Candidate, Office_Sought, Election_Year, format(sum(Total_$),2) ```sql
from combined_party_data select Candidate, Office_Sought, Election_Year, format(sum(Total_$),2)
where Election_Year = 2016 from combined_party_data
group by Candidate, Office_Sought, Election_Year where Election_Year = 2016
having sum(Total_$) between 3000000 and 18000000 group by Candidate, Office_Sought, Election_Year
order by sum(Total_$) desc; having sum(Total_$) between 3000000 and 18000000
` order by sum(Total_$) desc;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/between02.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/between02.JPG?raw=true)

View File

@ -14,38 +14,41 @@ localeTitle: SQL CHECK القيد
**الخلية:** **الخلية:**
`CREATE TABLE Persons ( ```sql
ID int NOT NULL, CREATE TABLE Persons (
LastName varchar(255) NOT NULL, ID int NOT NULL,
FirstName varchar(255), LastName varchar(255) NOT NULL,
Age int, FirstName varchar(255),
CHECK (Age>=18) Age int,
); CHECK (Age>=18)
` );
```
**SQL Server / Oracle / MS Access:** **SQL Server / Oracle / MS Access:**
`CREATE TABLE Persons ( ```sql
ID int NOT NULL, CREATE TABLE Persons (
LastName varchar(255) NOT NULL, ID int NOT NULL,
FirstName varchar(255), LastName varchar(255) NOT NULL,
Age int CHECK (Age>=18) FirstName varchar(255),
); Age int CHECK (Age>=18)
` );
```
للسماح بتسمية قيد CHECK ، ولتحديد قيد CHECK على أعمدة متعددة ، استخدم بناء جملة SQL التالي: للسماح بتسمية قيد CHECK ، ولتحديد قيد CHECK على أعمدة متعددة ، استخدم بناء جملة SQL التالي:
**MySQL / SQL Server / Oracle / MS Access:** **MySQL / SQL Server / Oracle / MS Access:**
`CREATE TABLE Persons ( ```sql
ID int NOT NULL, CREATE TABLE Persons (
LastName varchar(255) NOT NULL, ID int NOT NULL,
FirstName varchar(255), LastName varchar(255) NOT NULL,
Age int, FirstName varchar(255),
City varchar(255), Age int,
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes') City varchar(255),
); CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
` );
```
### SQL الاختيار على ALTER TABLE ### SQL الاختيار على ALTER TABLE
@ -53,17 +56,19 @@ localeTitle: SQL CHECK القيد
**MySQL / SQL Server / Oracle / MS Access:** **MySQL / SQL Server / Oracle / MS Access:**
`ALTER TABLE Persons ```sql
ADD CHECK (Age>=18); ALTER TABLE Persons
` ADD CHECK (Age>=18);
```
للسماح بتسمية قيد CHECK ، ولتحديد قيد CHECK على أعمدة متعددة ، استخدم بناء جملة SQL التالي: للسماح بتسمية قيد CHECK ، ولتحديد قيد CHECK على أعمدة متعددة ، استخدم بناء جملة SQL التالي:
**MySQL / SQL Server / Oracle / MS Access:** **MySQL / SQL Server / Oracle / MS Access:**
`ALTER TABLE Persons ```sql
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes'); ALTER TABLE Persons
` ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
```
### انخفاض القيد الاختيار ### انخفاض القيد الاختيار
@ -71,12 +76,14 @@ localeTitle: SQL CHECK القيد
**SQL Server / Oracle / MS Access:** **SQL Server / Oracle / MS Access:**
`ALTER TABLE Persons ```sql
DROP CONSTRAINT CHK_PersonAge; ALTER TABLE Persons
` DROP CONSTRAINT CHK_PersonAge;
```
**الخلية:** **الخلية:**
`ALTER TABLE Persons ```sql
DROP CHECK CHK_PersonAge; ALTER TABLE Persons
` DROP CHECK CHK_PersonAge;
```

View File

@ -15,15 +15,17 @@ localeTitle: COUNT COUNT Aggregate Function
كمرجع ، إليك البيانات الحالية لجميع الصفوف في قاعدة بيانات الطلاب الخاصة بنا. كمرجع ، إليك البيانات الحالية لجميع الصفوف في قاعدة بيانات الطلاب الخاصة بنا.
`select studentID, FullName, programOfStudy, sat_score from student; -- all records with fields of interest ```sql
` select studentID, FullName, programOfStudy, sat_score from student; -- all records with fields of interest
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count01.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count01.JPG?raw=true)
توفر عبارة SQL هذه حسابًا لكل الصفوف. لاحظ أنه يمكنك منح عمود COUNT الناتج اسمًا باستخدام "AS". توفر عبارة SQL هذه حسابًا لكل الصفوف. لاحظ أنه يمكنك منح عمود COUNT الناتج اسمًا باستخدام "AS".
`select count(*) AS studentCount from student; -- count of all records ```sql
` select count(*) AS studentCount from student; -- count of all records
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count02.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count02.JPG?raw=true)
@ -43,11 +45,12 @@ localeTitle: COUNT COUNT Aggregate Function
في ما يلي مثال على ذلك باستخدام جدول أموال الحملة. هذا هو مجموع الدولارات في كل معاملة وعدد المساهمات لكل حزب سياسي خلال الحملة الرئاسية الأمريكية لعام 2016. في ما يلي مثال على ذلك باستخدام جدول أموال الحملة. هذا هو مجموع الدولارات في كل معاملة وعدد المساهمات لكل حزب سياسي خلال الحملة الرئاسية الأمريكية لعام 2016.
`select Specific_Party, Election_Year, format(sum(Total_$),2) AS contribution$Total, count(*) AS numberOfContributions ```sql
from combined_party_data select Specific_Party, Election_Year, format(sum(Total_$),2) AS contribution$Total, count(*) AS numberOfContributions
group by Specific_Party,Election_Year from combined_party_data
having Election_Year = 2016; group by Specific_Party,Election_Year
` having Election_Year = 2016;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count05.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/count05.JPG?raw=true)

View File

@ -15,9 +15,10 @@ localeTitle: SQL CREATE INDEX Statement
فيما يلي مثال على صيغة بناء بيان الفهرس. لاحظ أن بناء الجملة يسمح لفهرس أن يكون أكثر من عمود واحد. فيما يلي مثال على صيغة بناء بيان الفهرس. لاحظ أن بناء الجملة يسمح لفهرس أن يكون أكثر من عمود واحد.
`CREATE INDEX index_name ```sql
ON table_name (column1, column2, ...); CREATE INDEX index_name
` ON table_name (column1, column2, ...);
```
إنشاء فهرس جديد في حقل جدول الطالب ، programOfStudy. كمرجع ، إليك التعريف الحالي لجدول الطالب. إنشاء فهرس جديد في حقل جدول الطالب ، programOfStudy. كمرجع ، إليك التعريف الحالي لجدول الطالب.
@ -25,9 +26,10 @@ localeTitle: SQL CREATE INDEX Statement
إليك بيان لإنشاء الفهرس ، ولقطة شاشة لتعريف الجدول المحدّث: إليك بيان لإنشاء الفهرس ، ولقطة شاشة لتعريف الجدول المحدّث:
`create index pStudyIndex ```sql
on student (programOfStudy); create index pStudyIndex
` on student (programOfStudy);
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/create-index-statement02.JPG?raw=true) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/create-index-statement02.JPG?raw=true)

View File

@ -12,17 +12,19 @@ localeTitle: SQL CREATE INDEX Statement
ينشئ فهرس على جدول. القيم المكررة مسموح بها: ينشئ فهرس على جدول. القيم المكررة مسموح بها:
`CREATE INDEX index_name ```sql
ON table_name (column1, column2, ...); CREATE INDEX index_name
` ON table_name (column1, column2, ...);
```
#### خلق فريدة من نوعها INDEX البناء #### خلق فريدة من نوعها INDEX البناء
ينشئ فهرس فريد على جدول. القيم المكررة غير مسموح بها: ينشئ فهرس فريد على جدول. القيم المكررة غير مسموح بها:
`CREATE UNIQUE INDEX index_name ```sql
ON table_name (column1, column2, ...); CREATE UNIQUE INDEX index_name
` ON table_name (column1, column2, ...);
```
> **ملاحظة:** يختلف بناء جملة إنشاء الفهارس بين قواعد بيانات مختلفة. لذلك: تحقق من بناء الجملة لإنشاء فهارس في قاعدة البيانات الخاصة بك. > **ملاحظة:** يختلف بناء جملة إنشاء الفهارس بين قواعد بيانات مختلفة. لذلك: تحقق من بناء الجملة لإنشاء فهارس في قاعدة البيانات الخاصة بك.
@ -30,14 +32,16 @@ localeTitle: SQL CREATE INDEX Statement
ينشئ عبارة SQL أدناه فهرس المسمى "idx\_lastname" على العمود "اسم العائلة" في جدول "الأشخاص": ينشئ عبارة SQL أدناه فهرس المسمى "idx\_lastname" على العمود "اسم العائلة" في جدول "الأشخاص":
`CREATE INDEX idx_lastname ```sql
ON Persons (LastName); CREATE INDEX idx_lastname
` ON Persons (LastName);
```
إذا كنت تريد إنشاء فهرس على مجموعة من الأعمدة ، فيمكنك سرد أسماء الأعمدة داخل الأقواس ، مفصولة بفواصل: CREATE INDEX idx\_pname إذا كنت تريد إنشاء فهرس على مجموعة من الأعمدة ، فيمكنك سرد أسماء الأعمدة داخل الأقواس ، مفصولة بفواصل: CREATE INDEX idx\_pname
`ON Persons (LastName, FirstName); ```sql
` ON Persons (LastName, FirstName);
```
#### DROP INDEX بيان #### DROP INDEX بيان
@ -45,21 +49,25 @@ localeTitle: SQL CREATE INDEX Statement
**MS Access:** **MS Access:**
`DROP INDEX index_name ON table_name; ```sql
` DROP INDEX index_name ON table_name;
```
**خادم قاعدة البيانات:** **خادم قاعدة البيانات:**
`DROP INDEX table_name.index_name; ```sql
` DROP INDEX table_name.index_name;
```
**DB2 / أوراكل:** **DB2 / أوراكل:**
`DROP INDEX index_name; ```sql
` DROP INDEX index_name;
```
**الخلية:** **الخلية:**
`ALTER TABLE table_name ```sql
DROP INDEX index_name; ALTER TABLE table_name
` DROP INDEX index_name;
```

View File

@ -8,19 +8,21 @@ localeTitle: SQL إنشاء بيان جدول
لإنشاء جدول في قاعدة بيانات تستخدم عبارة `CREATE TABLE` . يمكنك إعطاء اسم إلى الجدول وقائمة بالأعمدة مع أنواع البيانات الخاصة بها. لإنشاء جدول في قاعدة بيانات تستخدم عبارة `CREATE TABLE` . يمكنك إعطاء اسم إلى الجدول وقائمة بالأعمدة مع أنواع البيانات الخاصة بها.
`CREATE TABLE TABLENAME(Attribute1 Datatype, Attribute2 Datatype,........); ```
` CREATE TABLE TABLENAME(Attribute1 Datatype, Attribute2 Datatype,........);
```
في ما يلي مثال على إنشاء جدول باسم الشخص: في ما يلي مثال على إنشاء جدول باسم الشخص:
`CREATE TABLE Person( ```sql
Id int not null, CREATE TABLE Person(
Name varchar not null, Id int not null,
DateOfBirth date not null, Name varchar not null,
Gender bit not null, DateOfBirth date not null,
PRIMARY KEY( Id ) Gender bit not null,
); PRIMARY KEY( Id )
` );
```
في المثال أعلاه ، يكون لكل شخص اسم وتاريخ الميلاد وجنس. يعد عمود المعرّف هو المفتاح الذي يحدد شخصًا واحدًا في الجدول. يمكنك استخدام الكلمة الأساسية `PRIMARY KEY` لتكوين عمود واحد أو أكثر كمفتاح أساسي. في المثال أعلاه ، يكون لكل شخص اسم وتاريخ الميلاد وجنس. يعد عمود المعرّف هو المفتاح الذي يحدد شخصًا واحدًا في الجدول. يمكنك استخدام الكلمة الأساسية `PRIMARY KEY` لتكوين عمود واحد أو أكثر كمفتاح أساسي.

View File

@ -33,8 +33,9 @@ localeTitle: SQL إنشاء جدول
سنقوم بإنشاء المخطط للتعلم والاختبار باستخدام الأمر SQL ؛ سنقوم بإنشاء المخطط للتعلم والاختبار باستخدام الأمر SQL ؛
`create database fCC_alterTableGuide; ```
` create database fCC_alterTableGuide;
```
هذه الأمثلة بنية المخطط قبل تشغيل هذا الأمر هذه الأمثلة بنية المخطط قبل تشغيل هذا الأمر

View File

@ -35,10 +35,11 @@ A View هو كائن قاعدة بيانات يقدم البيانات المو
_سيغطي هذا الدليل هذا الجزء من البيان ..._ _سيغطي هذا الدليل هذا الجزء من البيان ..._
`CREATE ```sql
VIEW view_name [(column_list)] CREATE
AS select_statement VIEW view_name [(column_list)]
` AS select_statement
```
### إنشاء نموذج للعرض من جداول الطلاب ### إنشاء نموذج للعرض من جداول الطلاب

View File

@ -18,14 +18,15 @@ localeTitle: دالات تاريخ SQL
الحصول على التاريخ من النظام يمكن أن يكون سهل جدا لمعالجة البيانات باستخدام SQL. الحصول على التاريخ من النظام يمكن أن يكون سهل جدا لمعالجة البيانات باستخدام SQL.
`-- current date ```sql
select now(), sysdate(), current_date(), current_time(), -- date and time from the system on execution -- current date
dayofyear(now()) as NumDaysSoFarThisYr, select now(), sysdate(), current_date(), current_time(), -- date and time from the system on execution
EXTRACT(YEAR FROM now()) as theYearPart, dayofyear(now()) as NumDaysSoFarThisYr,
EXTRACT(YEAR_MONTH FROM now()) as theYrMonPart, EXTRACT(YEAR FROM now()) as theYearPart,
date_format(now(), '%W %M %Y') as oneOfManyFormats; EXTRACT(YEAR_MONTH FROM now()) as theYrMonPart,
; date_format(now(), '%W %M %Y') as oneOfManyFormats;
` ;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions04.JPG) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions04.JPG)
@ -39,12 +40,13 @@ localeTitle: دالات تاريخ SQL
### تاريخ الرياضيات ### تاريخ الرياضيات
`select now(), current_date(), ```sql
datediff(now(),'2017-01-01') as daysThisYear, select now(), current_date(),
subdate(current_date(), interval 150 day) as '150DaysAgo', datediff(now(),'2017-01-01') as daysThisYear,
adddate(now(), interval 7 day) as dateInA_Week -- date in a week subdate(current_date(), interval 150 day) as '150DaysAgo',
; adddate(now(), interval 7 day) as dateInA_Week -- date in a week
` ;
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions02.jpg) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions02.jpg)
@ -58,10 +60,11 @@ localeTitle: دالات تاريخ SQL
فيما يلي مثالان على استخدام تاريخ الرياضيات في مكان جملة: فيما يلي مثالان على استخدام تاريخ الرياضيات في مكان جملة:
`select * from student; - to show the current data being used for the example ```sql
select * from student where recordCreated < '2017-01-01'; select * from student; - to show the current data being used for the example
select * from student where recordCreated < subdate(current_date(), interval 225 day); select * from student where recordCreated < '2017-01-01';
` select * from student where recordCreated < subdate(current_date(), interval 225 day);
```
![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions03.jpg) ![صورة 1](https://github.com/SteveChevalier/guide-images/blob/master/date-functions03.jpg)

View File

@ -8,23 +8,27 @@ localeTitle: SQL حذف بيان
كن حذرا. يمكنك حذف جميع سجلات الجدول أو مجرد عدد قليل. استخدم شرط `WHERE` لتحديد السجلات التي تريد حذفها. الصيغة هي: كن حذرا. يمكنك حذف جميع سجلات الجدول أو مجرد عدد قليل. استخدم شرط `WHERE` لتحديد السجلات التي تريد حذفها. الصيغة هي:
`DELETE FROM table_name ```sql
WHERE condition; DELETE FROM table_name
` WHERE condition;
```
إليك مثال على الحذف من الجدول Person the record with Id 3: إليك مثال على الحذف من الجدول Person the record with Id 3:
`DELETE FROM Person ```sql
WHERE Id = 3; DELETE FROM Person
` WHERE Id = 3;
```
باستخدام DELETE لإزالة كافة السجلات من جدول محدد باستخدام DELETE لإزالة كافة السجلات من جدول محدد
`DELETE * FROM Person ```sql
; DELETE * FROM Person
` ;
```
أو اعتمادًا على RDBMS الخاص بك ، يمكنك استخدام عبارة TRUNCATE TABLE التي تقوم بحذف كافة السجلات من جدول ، كما قد تسمح أو لا تسمح بالتراجع طبقًا لـ RDBMS الخاص بك. DELETE هو DML و TRUNCATE هو DDL. أو اعتمادًا على RDBMS الخاص بك ، يمكنك استخدام عبارة TRUNCATE TABLE التي تقوم بحذف كافة السجلات من جدول ، كما قد تسمح أو لا تسمح بالتراجع طبقًا لـ RDBMS الخاص بك. DELETE هو DML و TRUNCATE هو DDL.
`TRUNCATE TABLE Person; ```sql
` TRUNCATE TABLE Person;
```

View File

@ -23,16 +23,18 @@ A View هو كائن يقدم البيانات من جدول واحد أو أك
### بناء الجملة الأساسي ### بناء الجملة الأساسي
`DROP VIEW [IF EXISTS] ```sql
view_name [, view_name] ... DROP VIEW [IF EXISTS]
` view_name [, view_name] ...
```
### إسقاط عرض SQL ### إسقاط عرض SQL
الجزء الموجود في حالة وجود أخطاء "اعتراض" ، في حالة عدم وجود طريقة العرض. الجزء الموجود في حالة وجود أخطاء "اعتراض" ، في حالة عدم وجود طريقة العرض.
`drop view if exists students_dropMe_v; ```sql
` drop view if exists students_dropMe_v;
```
طريقة العرض بعد الإنشاء: طريقة العرض بعد الإنشاء:

View File

@ -18,16 +18,18 @@ localeTitle: SQL الخارجية مفتاح القيد
لاحظ أن جدول الطالب يحتوي على مفتاح أساسي عمود واحد للطالب. لاحظ أن جدول الطالب يحتوي على مفتاح أساسي عمود واحد للطالب.
`SHOW index FROM student; ```sql
` SHOW index FROM student;
```
`+---------+------------+----------+--------------+-------------+ ```text
| Table | Non_unique | Key_name | Seq_in_index | Column_name | +---------+------------+----------+--------------+-------------+
+---------+------------+----------+--------------+-------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name |
| student | 0 | PRIMARY | 1 | studentID | +---------+------------+----------+--------------+-------------+
+---------+------------+----------+--------------+-------------+ | student | 0 | PRIMARY | 1 | studentID |
1 row in set (0.00 sec) (some columns removed on the right for clarity) +---------+------------+----------+--------------+-------------+
` 1 row in set (0.00 sec) (some columns removed on the right for clarity)
```
### مفاتيح الجدول الأساسي والأجنبي للطفل ### مفاتيح الجدول الأساسي والأجنبي للطفل
@ -36,29 +38,32 @@ localeTitle: SQL الخارجية مفتاح القيد
``SHOW index FROM `student-contact-info`; ``SHOW index FROM `student-contact-info`;
`` ``
`+----------------------+------------+----------+--------------+-------------+ ```text
| Table | Non_unique | Key_name | Seq_in_index | Column_name | +----------------------+------------+----------+--------------+-------------+
+----------------------+------------+----------+--------------+-------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name |
| student-contact-info | 0 | PRIMARY | 1 | studentID | +----------------------+------------+----------+--------------+-------------+
+----------------------+------------+----------+--------------+-------------+ | student-contact-info | 0 | PRIMARY | 1 | studentID |
1 row in set (0.00 sec) (some columns removed on the right for clarity) +----------------------+------------+----------+--------------+-------------+
` 1 row in set (0.00 sec) (some columns removed on the right for clarity)
```
`SELECT concat(table_name, '.', column_name) AS 'foreign key', ```sql
concat(referenced_table_name, '.', referenced_column_name) AS 'references' SELECT concat(table_name, '.', column_name) AS 'foreign key',
FROM information_schema.key_column_usage concat(referenced_table_name, '.', referenced_column_name) AS 'references'
WHERE referenced_table_name IS NOT NULL FROM information_schema.key_column_usage
AND table_schema = 'fcc_sql_guides_database' WHERE referenced_table_name IS NOT NULL
AND table_name = 'student-contact-info'; AND table_schema = 'fcc_sql_guides_database'
` AND table_name = 'student-contact-info';
```
`+--------------------------------+-------------------+ ```text
| foreign key | references | +--------------------------------+-------------------+
+--------------------------------+-------------------+ | foreign key | references |
| student-contact-info.studentID | student.studentID | +--------------------------------+-------------------+
+--------------------------------+-------------------+ | student-contact-info.studentID | student.studentID |
1 row in set (0.00 sec) +--------------------------------+-------------------+
` 1 row in set (0.00 sec)
```
### مثال على التقرير باستخدام جدول الطالب الرئيسي والجدول الفرعي للاتصال ### مثال على التقرير باستخدام جدول الطالب الرئيسي والجدول الفرعي للاتصال
@ -68,19 +73,20 @@ localeTitle: SQL الخارجية مفتاح القيد
JOIN `student-contact-info` AS b ON a.studentID = b.studentID; JOIN `student-contact-info` AS b ON a.studentID = b.studentID;
`` ``
`+-----------+------------------------+------------------+--------------------+--------------------+ ```text
| studentID | FullName | programOfStudy | student-phone-cell | student-US-zipcode | +-----------+------------------------+------------------+--------------------+--------------------+
+-----------+------------------------+------------------+--------------------+--------------------+ | studentID | FullName | programOfStudy | student-phone-cell | student-US-zipcode |
| 1 | Monique Davis | Literature | 555-555-5551 | 97111 | +-----------+------------------------+------------------+--------------------+--------------------+
| 2 | Teri Gutierrez | Programming | 555-555-5552 | 97112 | | 1 | Monique Davis | Literature | 555-555-5551 | 97111 |
| 3 | Spencer Pautier | Programming | 555-555-5553 | 97113 | | 2 | Teri Gutierrez | Programming | 555-555-5552 | 97112 |
| 4 | Louis Ramsey | Programming | 555-555-5554 | 97114 | | 3 | Spencer Pautier | Programming | 555-555-5553 | 97113 |
| 5 | Alvin Greene | Programming | 555-555-5555 | 97115 | | 4 | Louis Ramsey | Programming | 555-555-5554 | 97114 |
| 6 | Sophie Freeman | Programming | 555-555-5556 | 97116 | | 5 | Alvin Greene | Programming | 555-555-5555 | 97115 |
| 7 | Edgar Frank "Ted" Codd | Computer Science | 555-555-5557 | 97117 | | 6 | Sophie Freeman | Programming | 555-555-5556 | 97116 |
| 8 | Donald D. Chamberlin | Computer Science | 555-555-5558 | 97118 | | 7 | Edgar Frank "Ted" Codd | Computer Science | 555-555-5557 | 97117 |
+-----------+------------------------+------------------+--------------------+--------------------+ | 8 | Donald D. Chamberlin | Computer Science | 555-555-5558 | 97118 |
` +-----------+------------------------+------------------+--------------------+--------------------+
```
### استنتاج ### استنتاج

View File

@ -14,27 +14,29 @@ localeTitle: مجموعة SQL بيان
إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة. إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة.
`SELECT Candidate, Election_year, sum(Total_$), count(*) ```sql
FROM combined_party_data SELECT Candidate, Election_year, sum(Total_$), count(*)
WHERE Election_year = 2016 FROM combined_party_data
GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns WHERE Election_year = 2016
HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD) GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns
ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first. HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD)
` ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first.
```
`+--------------------------------------------------+---------------+-------------------+----------+ ```text
| Candidate | Election_year | sum(Total_$) | count(*) | +--------------------------------------------------+---------------+-------------------+----------+
+--------------------------------------------------+---------------+-------------------+----------+ | Candidate | Election_year | sum(Total_$) | count(*) |
| CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 | +--------------------------------------------------+---------------+-------------------+----------+
| TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 | | CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 |
| SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 | | TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 |
| CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 | | SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 |
| CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 | | CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 |
| RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 | | CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 |
| BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 | | RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 |
+--------------------------------------------------+---------------+-------------------+----------+ | BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 |
7 rows in set (0.01 sec) +--------------------------------------------------+---------------+-------------------+----------+
` 7 rows in set (0.01 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -16,27 +16,29 @@ localeTitle: SQL وجود جملة
إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة. إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة.
`SELECT Candidate, Election_year, sum(Total_$), count(*) ```sql
FROM combined_party_data SELECT Candidate, Election_year, sum(Total_$), count(*)
WHERE Election_year = 2016 FROM combined_party_data
GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns WHERE Election_year = 2016
HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD) GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns
ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first. HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD)
` ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first.
```
`+--------------------------------------------------+---------------+-------------------+----------+ ```text
| Candidate | Election_year | sum(Total_$) | count(*) | +--------------------------------------------------+---------------+-------------------+----------+
+--------------------------------------------------+---------------+-------------------+----------+ | Candidate | Election_year | sum(Total_$) | count(*) |
| CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 | +--------------------------------------------------+---------------+-------------------+----------+
| TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 | | CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 |
| SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 | | TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 |
| CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 | | SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 |
| CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 | | CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 |
| RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 | | CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 |
| BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 | | RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 |
+--------------------------------------------------+---------------+-------------------+----------+ | BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 |
7 rows in set (0.01 sec) +--------------------------------------------------+---------------+-------------------+----------+
` 7 rows in set (0.01 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -10,39 +10,43 @@ localeTitle: مزود في المشغل
في ما يلي قائمة الطلاب الكاملة الحالية لمقارنة مجموعة نتائج `WHERE` : في ما يلي قائمة الطلاب الكاملة الحالية لمقارنة مجموعة نتائج `WHERE` :
`select studentID, FullName, sat_score, rcd_updated from student; ```sql
` select studentID, FullName, sat_score, rcd_updated from student;
```
`+-----------+------------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+---------------------+
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+ | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+---------------------+
` 9 rows in set (0.00 sec)
```
سيتم عرض الصفوف التي لها نقاط SAT في هذه القائمة (1000 ، 2400): سيتم عرض الصفوف التي لها نقاط SAT في هذه القائمة (1000 ، 2400):
`select studentID, FullName, sat_score, rcd_updated ```sql
from student select studentID, FullName, sat_score, rcd_updated
where sat_score in (1000, 2400); from student
` where sat_score in (1000, 2400);
```
`+-----------+------------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+---------------------+
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+ | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
4 rows in set (0.00 sec) +-----------+------------------------+-----------+---------------------+
` 4 rows in set (0.00 sec)
```

View File

@ -10,9 +10,10 @@ localeTitle: حقن SQL
المثال التالي هو أحد مقتطفات التعليمات البرمجية التي سيتم استرداد مستخدم من قاعدة بيانات تستند إلى `AccountId` . المثال التالي هو أحد مقتطفات التعليمات البرمجية التي سيتم استرداد مستخدم من قاعدة بيانات تستند إلى `AccountId` .
`passedInAccountId = getRequestString("AccountId"); ```
sql = "select * from Accounts where AccountId = " + passedInAccountId; passedInAccountId = getRequestString("AccountId");
` sql = "select * from Accounts where AccountId = " + passedInAccountId;
```
يمكن استخدام حقن SQL لخرق هذا الرمز عن طريق حقن `1=1;` بيان `AccountId` . يمكن استخدام حقن SQL لخرق هذا الرمز عن طريق حقن `1=1;` بيان `AccountId` .

View File

@ -24,15 +24,17 @@ localeTitle: SQL الداخلية الانضمام إلى الكلمات الر
"انضم" البيانات \`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + "انضم" البيانات \`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- +
`### Complete table listings for reference ```
### Complete table listings for reference
Student table SQL
` Student table SQL
```
مزود SELECT a.studentID، a.FullName، sat\_score، a.programOfStudy، schoolEmailAdr من الطالب AS مزود SELECT a.studentID، a.FullName، sat\_score، a.programOfStudy، schoolEmailAdr من الطالب AS
`student or LEFT table ```
` student or LEFT table
```
نص + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | studentID | FullName | sat\_score | programOfStudy | schoolEmailAdr | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | 1 | مونيك ديفيز 400 | الأدب | Monique@someSchool.edu | | 2 | تيري جوتيريز | 800 | برمجة | Teri@someSchool.edu | | 3 | سبنسر باوتير | 1000 | برمجة | Spencer@someSchool.edu | | 4 | لويس رمزي 1200 | برمجة | Louis@someSchool.edu | | 5 | ألفين غرين | 1200 | برمجة | Alvin@someSchool.edu | | 6 | صوفي فريمان 1200 | برمجة | Sophie@someSchool.edu | | 7 | إدغار فرانك "تيد" كود 2400 | علوم الكمبيوتر | Edgar@someSchool.edu | | 8 | دونالد د. شامبرلين 2400 | علوم الكمبيوتر | Donald@someSchool.edu | | 9 | ريمون ف. بويس 2400 | علوم الكمبيوتر | Raymond@someSchool.edu | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + 9 صفوف في مجموعة (0.00 ثانية) نص + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | studentID | FullName | sat\_score | programOfStudy | schoolEmailAdr | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | 1 | مونيك ديفيز 400 | الأدب | Monique@someSchool.edu | | 2 | تيري جوتيريز | 800 | برمجة | Teri@someSchool.edu | | 3 | سبنسر باوتير | 1000 | برمجة | Spencer@someSchool.edu | | 4 | لويس رمزي 1200 | برمجة | Louis@someSchool.edu | | 5 | ألفين غرين | 1200 | برمجة | Alvin@someSchool.edu | | 6 | صوفي فريمان 1200 | برمجة | Sophie@someSchool.edu | | 7 | إدغار فرانك "تيد" كود 2400 | علوم الكمبيوتر | Edgar@someSchool.edu | | 8 | دونالد د. شامبرلين 2400 | علوم الكمبيوتر | Donald@someSchool.edu | | 9 | ريمون ف. بويس 2400 | علوم الكمبيوتر | Raymond@someSchool.edu | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + 9 صفوف في مجموعة (0.00 ثانية)

View File

@ -8,11 +8,12 @@ localeTitle: إدراج SQL في تحديد البيان
يجمع `INSERT INTO SELECT` بين `INSERT INTO` و `SELECT` ، ويمكنك استخدام أي شروط تريدها. الصيغة هي: يجمع `INSERT INTO SELECT` بين `INSERT INTO` و `SELECT` ، ويمكنك استخدام أي شروط تريدها. الصيغة هي:
`INSERT INTO table2 (column1, column2, column3, ...) ```sql
SELECT column1, column2, column3, ... INSERT INTO table2 (column1, column2, column3, ...)
FROM table1 SELECT column1, column2, column3, ...
WHERE condition; FROM table1
` WHERE condition;
```
هنا مثال يحتذى به في الجدول الشخص كل الطلاب الذكور من الجدول الطلاب. هنا مثال يحتذى به في الجدول الشخص كل الطلاب الذكور من الجدول الطلاب.

View File

@ -8,15 +8,17 @@ localeTitle: إدراج SQL في بيان
يمكنك القيام بذلك بطريقتين ، إذا أردت إدراج قيم في بعض الأعمدة فقط ، فيجب عليك إدراج أسمائها بما في ذلك جميع الأعمدة الإلزامية. الصيغة هي: يمكنك القيام بذلك بطريقتين ، إذا أردت إدراج قيم في بعض الأعمدة فقط ، فيجب عليك إدراج أسمائها بما في ذلك جميع الأعمدة الإلزامية. الصيغة هي:
`INSERT INTO table_name (column1, column2, column3, ...) ```sql
VALUES (value1, value2, value3, ...); INSERT INTO table_name (column1, column2, column3, ...)
` VALUES (value1, value2, value3, ...);
```
والطريقة الأخرى هي إدراج قيم لجميع الأعمدة في الجدول ، وليس من الضروري تحديد أسماء الأعمدة. الصيغة هي: والطريقة الأخرى هي إدراج قيم لجميع الأعمدة في الجدول ، وليس من الضروري تحديد أسماء الأعمدة. الصيغة هي:
`INSERT INTO table_name ```sql
VALUES (value1, value2, value3, ...); INSERT INTO table_name
` VALUES (value1, value2, value3, ...);
```
في ما يلي مثال على إدراج سجل في الجدول الشخص بطريقتين: في ما يلي مثال على إدراج سجل في الجدول الشخص بطريقتين:

View File

@ -8,51 +8,56 @@ localeTitle: أسئلة مقابلة SQL
هذا هو نوع الارتباط الافتراضي إذا لم يتم تحديد صلة. تقوم بإرجاع كافة الصفوف التي توجد تطابق واحد على الأقل في كلا الجدولين. هذا هو نوع الارتباط الافتراضي إذا لم يتم تحديد صلة. تقوم بإرجاع كافة الصفوف التي توجد تطابق واحد على الأقل في كلا الجدولين.
`SELECT * FROM A x JOIN B y ON y.aId = x.Id ```sql
` SELECT * FROM A x JOIN B y ON y.aId = x.Id
```
### ما هو انضمام اليسار في SQL؟ ### ما هو انضمام اليسار في SQL؟
يقوم الرابط الأيسر بإرجاع جميع الصفوف من الجدول الأيسر ، والصفوف المتطابقة من الجدول الصحيح. سيتم إرجاع الصفوف في الجدول الأيسر حتى في حالة عدم وجود تطابق في الجدول الصحيح. الصفوف من الجدول الأيسر بدون تطابق في الجدول الصحيح ستكون `null` لقيم الجدول الصحيح. يقوم الرابط الأيسر بإرجاع جميع الصفوف من الجدول الأيسر ، والصفوف المتطابقة من الجدول الصحيح. سيتم إرجاع الصفوف في الجدول الأيسر حتى في حالة عدم وجود تطابق في الجدول الصحيح. الصفوف من الجدول الأيسر بدون تطابق في الجدول الصحيح ستكون `null` لقيم الجدول الصحيح.
`SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id ```sql
` SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id
```
### ما هو الانضمام الصحيح في SQL؟ ### ما هو الانضمام الصحيح في SQL؟
يقوم الربط الأيمن بإرجاع جميع الصفوف من الجدول الصحيح والصفوف المتطابقة من الجدول الأيسر. مقابل صلة اليسار ، سيؤدي هذا إلى إرجاع كافة الصفوف من الجدول الصحيح حتى عندما لا يوجد تطابق في الجدول الأيسر. الصفوف في الجدول الأيمن التي ليس لها أي تطابق في الجدول الأيسر سيكون لها قيم `null` الجدول الأيسر. يقوم الربط الأيمن بإرجاع جميع الصفوف من الجدول الصحيح والصفوف المتطابقة من الجدول الأيسر. مقابل صلة اليسار ، سيؤدي هذا إلى إرجاع كافة الصفوف من الجدول الصحيح حتى عندما لا يوجد تطابق في الجدول الأيسر. الصفوف في الجدول الأيمن التي ليس لها أي تطابق في الجدول الأيسر سيكون لها قيم `null` الجدول الأيسر.
`SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id ```sql
` SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id
```
### ما هو الانضمام الكامل في SQL؟ ### ما هو الانضمام الكامل في SQL؟
إرجاع صلة كاملة كافة الصفوف التي توجد تطابق في أي من الجداول. لذلك إذا كانت هناك صفوف في الجدول الأيسر لا تحتوي على تطابقات في الجدول الصحيح ، فسيتم تضمينها. وكذلك إذا كانت هناك صفوف في الجدول الأيمن لا تحتوي على تطابقات في الجدول الأيسر ، فسيتم تضمينها. إرجاع صلة كاملة كافة الصفوف التي توجد تطابق في أي من الجداول. لذلك إذا كانت هناك صفوف في الجدول الأيسر لا تحتوي على تطابقات في الجدول الصحيح ، فسيتم تضمينها. وكذلك إذا كانت هناك صفوف في الجدول الأيمن لا تحتوي على تطابقات في الجدول الأيسر ، فسيتم تضمينها.
`SELECT Customers.CustomerName, Orders.OrderID ```sql
FROM Customers SELECT Customers.CustomerName, Orders.OrderID
FULL OUTER JOIN Orders FROM Customers
ON Customers.CustomerID=Orders.CustomerID FULL OUTER JOIN Orders
ORDER BY Customers.CustomerName ON Customers.CustomerID=Orders.CustomerID
` ORDER BY Customers.CustomerName
```
### ما هي نتيجة الأمر التالي؟ ### ما هي نتيجة الأمر التالي؟
\`\` \` إسقاط عرض view\_name \`\` \` إسقاط عرض view\_name
`Here it'll be an error because we can't perform a DML operation on a view. ```
Here it'll be an error because we can't perform a DML operation on a view.
### Can we perform a rollback after using ALTER command?
No, because ALTER is a DDL command and Oracle server performs an automatic COMMIT when the DDL statements are executed. ### Can we perform a rollback after using ALTER command?
No, because ALTER is a DDL command and Oracle server performs an automatic COMMIT when the DDL statements are executed.
### Which is the only constraint that enforces rules at column level?
NOT NULL is the only constraint that works at the column level. ### Which is the only constraint that enforces rules at column level?
NOT NULL is the only constraint that works at the column level.
### What are the pseudocolumns in SQL? Give some examples?
A pseudocolumn is a function which returns a system generated value. The reason it is known as so because a pseudocolumn is an Oracle assigned value used in the same context as an Oracle database column but not stored on disk. ### What are the pseudocolumns in SQL? Give some examples?
` A pseudocolumn is a function which returns a system generated value. The reason it is known as so because a pseudocolumn is an Oracle assigned value used in the same context as an Oracle database column but not stored on disk.
```
بعض الأمثلة على ذلك هي: ROWNUM، ROWID، USER، CURRVAL، NEXTVAL etc. \`\` \` بعض الأمثلة على ذلك هي: ROWNUM، ROWID، USER، CURRVAL، NEXTVAL etc. \`\` \`
@ -114,8 +119,9 @@ localeTitle: أسئلة مقابلة SQL
هنا خيار CASCADE ضروري لإزالة كافة كائنات المستخدم في قاعدة البيانات. \`\` \`sql هنا خيار CASCADE ضروري لإزالة كافة كائنات المستخدم في قاعدة البيانات. \`\` \`sql
انخفاض المستخدم ريتا CASCADE انخفاض المستخدم ريتا CASCADE
`### Write SQL query to find the nth highest salary from table. ```
` ### Write SQL query to find the nth highest salary from table.
```
مزود مزود
SELECT TOP 1 الراتب من عند ( SELECT DISTINCT TOP N Salary من الموظف ORDER BY Salary DESC ) ORDER BY الراتب ASC \`\` \` SELECT TOP 1 الراتب من عند ( SELECT DISTINCT TOP N Salary من الموظف ORDER BY Salary DESC ) ORDER BY الراتب ASC \`\` \`

View File

@ -10,11 +10,12 @@ localeTitle: ينضم SQL
### بناء جملة SQL مع التركيز على الانضمام ### بناء جملة SQL مع التركيز على الانضمام
`SELECT col1, col2, col3, etc.... ```sql
FROM tableNameOne AS a SELECT col1, col2, col3, etc....
JOIN tableNameTwo AS b ON a.primeKey = b.primeKey FROM tableNameOne AS a
etc... JOIN tableNameTwo AS b ON a.primeKey = b.primeKey
` etc...
```
يمكن أن يكون عبارة JOIN مجرد JOIN أو INNER JOIN ، والتي هي نفسها ، أو LEFT JOIN (الموضحة أدناه). يمكن أن يكون عبارة JOIN مجرد JOIN أو INNER JOIN ، والتي هي نفسها ، أو LEFT JOIN (الموضحة أدناه).
@ -49,11 +50,12 @@ localeTitle: ينضم SQL
بيانات "انضم": \`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + بيانات "انضم": \`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- +
`### Left Join ```
Using the keyword LEFT before JOIN causes the system to start with the student (LEFT) table but will return NULL from the RIGHT table if there are no rows for the LEFT table student. ### Left Join
Using the keyword LEFT before JOIN causes the system to start with the student (LEFT) table but will return NULL from the RIGHT table if there are no rows for the LEFT table student.
Note that studentID 9 appears here but the data from the contact table is just shown as NULL.
` Note that studentID 9 appears here but the data from the contact table is just shown as NULL.
```
مزود حدد a.studentID ، a.FullName ، a.programOfStudy ، ب. `student-phone-cell` ، ب. `student-US-zipcode` من الطالب ك LEFT JOIN `student-contact-info` AS b ON a.studentID = b.studentID؛ مزود حدد a.studentID ، a.FullName ، a.programOfStudy ، ب. `student-phone-cell` ، ب. `student-US-zipcode` من الطالب ك LEFT JOIN `student-contact-info` AS b ON a.studentID = b.studentID؛
@ -78,32 +80,35 @@ localeTitle: ينضم SQL
قوائم جدول الطلاب قوائم جدول الطلاب
`SELECT a.studentID, a.FullName, sat_score, a.programOfStudy, schoolEmailAdr ```sql
FROM student AS a; SELECT a.studentID, a.FullName, sat_score, a.programOfStudy, schoolEmailAdr
` FROM student AS a;
```
طالب أو يسار الجدول طالب أو يسار الجدول
`+-----------+------------------------+-----------+------------------+------------------------+ ```text
| studentID | FullName | sat_score | programOfStudy | schoolEmailAdr | +-----------+------------------------+-----------+------------------+------------------------+
+-----------+------------------------+-----------+------------------+------------------------+ | studentID | FullName | sat_score | programOfStudy | schoolEmailAdr |
| 1 | Monique Davis | 400 | Literature | Monique@someSchool.edu | +-----------+------------------------+-----------+------------------+------------------------+
| 2 | Teri Gutierrez | 800 | Programming | Teri@someSchool.edu | | 1 | Monique Davis | 400 | Literature | Monique@someSchool.edu |
| 3 | Spencer Pautier | 1000 | Programming | Spencer@someSchool.edu | | 2 | Teri Gutierrez | 800 | Programming | Teri@someSchool.edu |
| 4 | Louis Ramsey | 1200 | Programming | Louis@someSchool.edu | | 3 | Spencer Pautier | 1000 | Programming | Spencer@someSchool.edu |
| 5 | Alvin Greene | 1200 | Programming | Alvin@someSchool.edu | | 4 | Louis Ramsey | 1200 | Programming | Louis@someSchool.edu |
| 6 | Sophie Freeman | 1200 | Programming | Sophie@someSchool.edu | | 5 | Alvin Greene | 1200 | Programming | Alvin@someSchool.edu |
| 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | Edgar@someSchool.edu | | 6 | Sophie Freeman | 1200 | Programming | Sophie@someSchool.edu |
| 8 | Donald D. Chamberlin | 2400 | Computer Science | Donald@someSchool.edu | | 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | Edgar@someSchool.edu |
| 9 | Raymond F. Boyce | 2400 | Computer Science | Raymond@someSchool.edu | | 8 | Donald D. Chamberlin | 2400 | Computer Science | Donald@someSchool.edu |
+-----------+------------------------+-----------+------------------+------------------------+ | 9 | Raymond F. Boyce | 2400 | Computer Science | Raymond@someSchool.edu |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+------------------+------------------------+
` 9 rows in set (0.00 sec)
```
مزود SELECT \* from `student-contact-info` AS b؛ مزود SELECT \* from `student-contact-info` AS b؛
`student contact or RIGHT table ```
` student contact or RIGHT table
```
نص + ----------- + ---------------------------------- + - ------------------ + -------------------- + | studentID | studentEmailAddr | خلية هاتف الطالب student-US-zipcode | + ----------- + ---------------------------------- + - ------------------ + -------------------- + | 1 | Monique.Davis@freeCodeCamp.org | 555-555-5551 | 97111 | | 2 | Teri.Gutierrez@freeCodeCamp.org | 555-555-5552 | 97112 | | 3 | Spencer.Pautier@freeCodeCamp.org | 555-555-5553 | 97113 | | 4 | Louis.Ramsey@freeCodeCamp.org | 555-555-5554 | 97114 | | 5 | Alvin.Green@freeCodeCamp.org | 555-555-5555 | 97115 | | 6 | Sophie.Freeman@freeCodeCamp.org | 555-555-5556 | 97116 | | 7 | Maximo.Smith@freeCodeCamp.org | 555-555-5557 | 97117 | | 8 | Michael.Roach@freeCodeCamp.ort | 555-555-5558 | 97118 | + ----------- + ---------------------------------- + - ------------------ + -------------------- + 8 صفوف في مجموعة (0.00 ثانية) \`\` \` نص + ----------- + ---------------------------------- + - ------------------ + -------------------- + | studentID | studentEmailAddr | خلية هاتف الطالب student-US-zipcode | + ----------- + ---------------------------------- + - ------------------ + -------------------- + | 1 | Monique.Davis@freeCodeCamp.org | 555-555-5551 | 97111 | | 2 | Teri.Gutierrez@freeCodeCamp.org | 555-555-5552 | 97112 | | 3 | Spencer.Pautier@freeCodeCamp.org | 555-555-5553 | 97113 | | 4 | Louis.Ramsey@freeCodeCamp.org | 555-555-5554 | 97114 | | 5 | Alvin.Green@freeCodeCamp.org | 555-555-5555 | 97115 | | 6 | Sophie.Freeman@freeCodeCamp.org | 555-555-5556 | 97116 | | 7 | Maximo.Smith@freeCodeCamp.org | 555-555-5557 | 97117 | | 8 | Michael.Roach@freeCodeCamp.ort | 555-555-5558 | 97118 | + ----------- + ---------------------------------- + - ------------------ + -------------------- + 8 صفوف في مجموعة (0.00 ثانية) \`\` \`

View File

@ -22,14 +22,16 @@ localeTitle: SQL Left Join
\`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | | 9 | ريمون ف. بويس علوم الكمبيوتر | فارغة فارغة + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + 9 صفوف في مجموعة (0.00 ثانية) \`\` \`النص + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | studentID | FullName | programOfStudy | خلية هاتف الطالب student-US-zipcode | + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + | 1 | مونيك ديفيز الأدب | 555-555-5551 | 97111 | | 2 | تيري جوتيريز | برمجة | 555-555-5552 | 97112 | | 3 | سبنسر باوتير | برمجة | 555-555-5553 | 97113 | | 4 | لويس رمزي برمجة | 555-555-5554 | 97114 | | 5 | ألفين غرين | برمجة | 555-555-5555 | 97115 | | 6 | صوفي فريمان برمجة | 555-555-5556 | 97116 | | 7 | إدغار فرانك "تيد" كود علوم الكمبيوتر | 555-555-5557 | 97117 | | 8 | دونالد د. شامبرلين علوم الكمبيوتر | 555-555-5558 | 97118 | | 9 | ريمون ف. بويس علوم الكمبيوتر | فارغة فارغة + ----------- + ------------------------ + ------------ ------ + -------------------- + -------------------- + 9 صفوف في مجموعة (0.00 ثانية)
`### Complete table listings for reference ```
student or LEFT table SQL ### Complete table listings for reference
` student or LEFT table SQL
```
مزود SELECT a.studentID، a.FullName، sat\_score، a.programOfStudy، schoolEmailAdr من الطالب AS مزود SELECT a.studentID، a.FullName، sat\_score، a.programOfStudy، schoolEmailAdr من الطالب AS
`student or LEFT table data ```
` student or LEFT table data
```
نص + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | studentID | FullName | sat\_score | programOfStudy | schoolEmailAdr | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | 1 | مونيك ديفيز 400 | الأدب | Monique@someSchool.edu | | 2 | تيري جوتيريز | 800 | برمجة | Teri@someSchool.edu | | 3 | سبنسر باوتير | 1000 | برمجة | Spencer@someSchool.edu | | 4 | لويس رمزي 1200 | برمجة | Louis@someSchool.edu | | 5 | ألفين غرين | 1200 | برمجة | Alvin@someSchool.edu | | 6 | صوفي فريمان 1200 | برمجة | Sophie@someSchool.edu | | 7 | إدغار فرانك "تيد" كود 2400 | علوم الكمبيوتر | Edgar@someSchool.edu | | 8 | دونالد د. شامبرلين 2400 | علوم الكمبيوتر | Donald@someSchool.edu | | 9 | ريمون ف. بويس 2400 | علوم الكمبيوتر | Raymond@someSchool.edu | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + 9 صفوف في مجموعة (0.00 ثانية) نص + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | studentID | FullName | sat\_score | programOfStudy | schoolEmailAdr | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + | 1 | مونيك ديفيز 400 | الأدب | Monique@someSchool.edu | | 2 | تيري جوتيريز | 800 | برمجة | Teri@someSchool.edu | | 3 | سبنسر باوتير | 1000 | برمجة | Spencer@someSchool.edu | | 4 | لويس رمزي 1200 | برمجة | Louis@someSchool.edu | | 5 | ألفين غرين | 1200 | برمجة | Alvin@someSchool.edu | | 6 | صوفي فريمان 1200 | برمجة | Sophie@someSchool.edu | | 7 | إدغار فرانك "تيد" كود 2400 | علوم الكمبيوتر | Edgar@someSchool.edu | | 8 | دونالد د. شامبرلين 2400 | علوم الكمبيوتر | Donald@someSchool.edu | | 9 | ريمون ف. بويس 2400 | علوم الكمبيوتر | Raymond@someSchool.edu | + ----------- + ------------------------ + ----------- + ------------------ + ------------------------ + 9 صفوف في مجموعة (0.00 ثانية)

View File

@ -18,66 +18,73 @@ localeTitle: SQL LIKE المشغل
سيحدد هذا SQL الطلاب الذين لديهم `FullName` بدءًا من "Monique" أو تنتهي بـ "Greene". سيحدد هذا SQL الطلاب الذين لديهم `FullName` بدءًا من "Monique" أو تنتهي بـ "Greene".
`SELECT studentID, FullName, sat_score, rcd_updated ```sql
FROM student SELECT studentID, FullName, sat_score, rcd_updated
WHERE FROM student
FullName LIKE 'Monique%' OR -- note the % at the end but not the beginning WHERE
FullName LIKE '%Greene'; -- note the % at the beginning but not the end FullName LIKE 'Monique%' OR -- note the % at the end but not the beginning
` FullName LIKE '%Greene'; -- note the % at the beginning but not the end
```
`+-----------+---------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+---------------+-----------+---------------------+
+-----------+---------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+---------------+-----------+---------------------+
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
+-----------+---------------+-----------+---------------------+ | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
2 rows in set (0.00 sec) +-----------+---------------+-----------+---------------------+
` 2 rows in set (0.00 sec)
```
### يوجد نمط سلسلة في منتصف العمود ### يوجد نمط سلسلة في منتصف العمود
سيحدد هذا SQL الطلاب الذين لديهم "ree" في أي مكان في الاسم. سيحدد هذا SQL الطلاب الذين لديهم "ree" في أي مكان في الاسم.
`SELECT studentID, FullName, sat_score, rcd_updated ```sql
FROM student SELECT studentID, FullName, sat_score, rcd_updated
WHERE FullName LIKE '%ree%'; -- note the % at the beginning AND at the end FROM student
` WHERE FullName LIKE '%ree%'; -- note the % at the beginning AND at the end
```
`+-----------+----------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+----------------+-----------+---------------------+
+-----------+----------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | +-----------+----------------+-----------+---------------------+
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
+-----------+----------------+-----------+---------------------+ | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
2 rows in set (0.00 sec) +-----------+----------------+-----------+---------------------+
` 2 rows in set (0.00 sec)
```
### السلسلة ليست في العمود ### السلسلة ليست في العمود
يمكنك وضع "NOT" قبل LIKE لاستبعاد الصفوف بنمط السلسلة بدلاً من تحديدها. يستثني هذا SQL السجلات التي تحتوي على "cer Pau" و "Ted" في العمود FullName. يمكنك وضع "NOT" قبل LIKE لاستبعاد الصفوف بنمط السلسلة بدلاً من تحديدها. يستثني هذا SQL السجلات التي تحتوي على "cer Pau" و "Ted" في العمود FullName.
`SELECT studentID, FullName, sat_score, rcd_updated ```sql
FROM student SELECT studentID, FullName, sat_score, rcd_updated
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%'; FROM student
` WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
```
`+-----------+----------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+----------------------+-----------+---------------------+
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+ | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
7 rows in set (0.00 sec) +-----------+----------------------+-----------+---------------------+
` 7 rows in set (0.00 sec)
```
_في ما يلي قائمة الطلاب الكاملة الحالية للمقارنة مع مكان تعيين نتيجة الجملة أعلاه._ _في ما يلي قائمة الطلاب الكاملة الحالية للمقارنة مع مكان تعيين نتيجة الجملة أعلاه._
`SELECT studentID, FullName, sat_score, rcd_updated FROM student; ```sql
` SELECT studentID, FullName, sat_score, rcd_updated FROM student;
```
\`\` \`النص + ----------- + ------------------------ + ----------- + --------------------- + | studentID | FullName | _درجة_ جلس _|_ تحديث _Rcd_ | + ----------- + ------------------------ + ----------- + --------------------- + | 1 | مونيك ديفيز 400 | 2017-08-16 15:34:50 | | 2 | تيري جوتيريز | 800 | 2017-08-16 15:34:50 | | 3 | سبنسر باوتير | 1000 | 2017-08-16 15:34:50 | | 4 | لويس رمزي 1200 | 2017-08-16 15:34:50 | | 5 | ألفين غرين | 1200 | 2017-08-16 15:34:50 | | 6 | صوفي فريمان 1200 | 2017-08-16 15:34:50 | | 7 | إدغار فرانك "تيد" كود 2400 | 2017-08-16 15:35:33 | | 8 | دونالد د. شامبرلين 2400 | 2017-08-16 15:35:33 | | 9 | ريمون ف. بويس 2400 | 2017-08-16 15:35:33 | + ----------- + ------------------------ + ----------- + --------------------- + 9 صفوف في مجموعة (0.00 ثانية) \`\` \`النص + ----------- + ------------------------ + ----------- + --------------------- + | studentID | FullName | _درجة_ جلس _|_ تحديث _Rcd_ | + ----------- + ------------------------ + ----------- + --------------------- + | 1 | مونيك ديفيز 400 | 2017-08-16 15:34:50 | | 2 | تيري جوتيريز | 800 | 2017-08-16 15:34:50 | | 3 | سبنسر باوتير | 1000 | 2017-08-16 15:34:50 | | 4 | لويس رمزي 1200 | 2017-08-16 15:34:50 | | 5 | ألفين غرين | 1200 | 2017-08-16 15:34:50 | | 6 | صوفي فريمان 1200 | 2017-08-16 15:34:50 | | 7 | إدغار فرانك "تيد" كود 2400 | 2017-08-16 15:35:33 | | 8 | دونالد د. شامبرلين 2400 | 2017-08-16 15:35:33 | | 9 | ريمون ف. بويس 2400 | 2017-08-16 15:35:33 | + ----------- + ------------------------ + ----------- + --------------------- + 9 صفوف في مجموعة (0.00 ثانية)

View File

@ -8,7 +8,8 @@ localeTitle: SQL لا المشغل
في ما يلي مثال يختار جميع الأشخاص غير الذكور: في ما يلي مثال يختار جميع الأشخاص غير الذكور:
`SELECT Id, Name, DateOfBirth, Gender ```sql
FROM Person SELECT Id, Name, DateOfBirth, Gender
WHERE NOT Gender = "M" FROM Person
` WHERE NOT Gender = "M"
```

View File

@ -8,16 +8,18 @@ localeTitle: SQL أو المشغل
في ما يلي مثال يحدد جميع السجلات من جدول "الأشخاص" الذين هم إما ذكور أو الذين لديهم اسم "ماري": في ما يلي مثال يحدد جميع السجلات من جدول "الأشخاص" الذين هم إما ذكور أو الذين لديهم اسم "ماري":
`SELECT Id, Name, DateOfBirth, Gender ```sql
FROM Person SELECT Id, Name, DateOfBirth, Gender
WHERE Gender = “M” OR Name = “Mary” FROM Person
` WHERE Gender = “M” OR Name = “Mary”
```
يمكنك دمج عوامل تشغيل أخرى في `WHERE` (استخدم الأقواس للإشارة إلى ترتيب العمليات) كما في هذا المثال: يمكنك دمج عوامل تشغيل أخرى في `WHERE` (استخدم الأقواس للإشارة إلى ترتيب العمليات) كما في هذا المثال:
`SELECT Id, Name, DateOfBirth, Gender ```sql
FROM Person SELECT Id, Name, DateOfBirth, Gender
WHERE Gender = “M” AND (Name = “Peter” OR Name = “John”) FROM Person
` WHERE Gender = “M” AND (Name = “Peter” OR Name = “John”)
```
يختار هذا المثال جميع السجلات التي يكون فيها الجنس "M" والاسم "Peter" ، وكذلك الجنس حيث يكون "M" والاسم "John". يختار هذا المثال جميع السجلات التي يكون فيها الجنس "M" والاسم "Peter" ، وكذلك الجنس حيث يكون "M" والاسم "John".

View File

@ -8,47 +8,51 @@ localeTitle: ترتيب SQL بالكلمات الرئيسية
ORDER BY يعطينا طريقة ل SORT النتيجة المحددة بواسطة واحد أو أكثر من العناصر في قسم SELECT. هنا هو مزود فرز الفرز للطلاب من خلال FullName بترتيب تنازلي. ترتيب الفرز الافتراضي هو تصاعدي (ASC) ولكن لفرز بالترتيب المعاكس (تنازلي) تستخدم DESC. ORDER BY يعطينا طريقة ل SORT النتيجة المحددة بواسطة واحد أو أكثر من العناصر في قسم SELECT. هنا هو مزود فرز الفرز للطلاب من خلال FullName بترتيب تنازلي. ترتيب الفرز الافتراضي هو تصاعدي (ASC) ولكن لفرز بالترتيب المعاكس (تنازلي) تستخدم DESC.
`SELECT studentID, FullName, sat_score ```sql
FROM student SELECT studentID, FullName, sat_score
ORDER BY FullName DESC; FROM student
` ORDER BY FullName DESC;
```
`+-----------+------------------------+-----------+ ```text
| studentID | FullName | sat_score | +-----------+------------------------+-----------+
+-----------+------------------------+-----------+ | studentID | FullName | sat_score |
| 2 | Teri Gutierrez | 800 | +-----------+------------------------+-----------+
| 3 | Spencer Pautier | 1000 | | 2 | Teri Gutierrez | 800 |
| 6 | Sophie Freeman | 1200 | | 3 | Spencer Pautier | 1000 |
| 9 | Raymond F. Boyce | 2400 | | 6 | Sophie Freeman | 1200 |
| 1 | Monique Davis | 400 | | 9 | Raymond F. Boyce | 2400 |
| 4 | Louis Ramsey | 1200 | | 1 | Monique Davis | 400 |
| 7 | Edgar Frank "Ted" Codd | 2400 | | 4 | Louis Ramsey | 1200 |
| 8 | Donald D. Chamberlin | 2400 | | 7 | Edgar Frank "Ted" Codd | 2400 |
| 5 | Alvin Greene | 1200 | | 8 | Donald D. Chamberlin | 2400 |
+-----------+------------------------+-----------+ | 5 | Alvin Greene | 1200 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+
` 9 rows in set (0.00 sec)
```
_وفيما يلي قائمة الطلاب المسجلين من الأمم المتحدة ، الحالية ، الكاملة للمقارنة مع ما سبق._ _وفيما يلي قائمة الطلاب المسجلين من الأمم المتحدة ، الحالية ، الكاملة للمقارنة مع ما سبق._
`SELECT studentID, FullName, sat_score, rcd_updated FROM student; ```sql
` SELECT studentID, FullName, sat_score, rcd_updated FROM student;
```
`+-----------+------------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+---------------------+
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+ | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+---------------------+
` 9 rows in set (0.00 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -22,12 +22,13 @@ localeTitle: SQL مفتاح القيد الرئيسي
فيما يلي أمر إنشاء جدول يقوم أيضًا بإنشاء مفتاح أساسي باستخدام حقلين. فيما يلي أمر إنشاء جدول يقوم أيضًا بإنشاء مفتاح أساسي باستخدام حقلين.
`CREATE TABLE priKeyExample( ```sql
rcdKey_id_a INT NOT NULL, CREATE TABLE priKeyExample(
rcdKeySeq_id INT NOT NULL, rcdKey_id_a INT NOT NULL,
someData varchar(256) NOT NULL, rcdKeySeq_id INT NOT NULL,
PRIMARY KEY(rcdKey_id_a,rcdKeySeq_id)); someData varchar(256) NOT NULL,
` PRIMARY KEY(rcdKey_id_a,rcdKeySeq_id));
```
### مثال مع جدول التغيير ### مثال مع جدول التغيير
@ -38,9 +39,10 @@ localeTitle: SQL مفتاح القيد الرئيسي
الآن سنقوم بإضافة واحدة جديدة. الآن سنقوم بإضافة واحدة جديدة.
`ALTER TABLE priKeyExample ```sql
ADD CONSTRAINT myPriKey PRIMARY KEY(rcdKey_id_a,rcdKeySeq_id); ALTER TABLE priKeyExample
` ADD CONSTRAINT myPriKey PRIMARY KEY(rcdKey_id_a,rcdKeySeq_id);
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -14,11 +14,12 @@ A View هو كائن قاعدة بيانات يقدم البيانات من جد
### Sytax العام ### Sytax العام
`CREATE OR REPLACE VIEW view_name AS ```sql
SELECT column1, column2, ... CREATE OR REPLACE VIEW view_name AS
FROM table_name SELECT column1, column2, ...
WHERE condition; FROM table_name
` WHERE condition;
```
### يستخدم SQL لإنشاء العرض والبيانات الحالية ### يستخدم SQL لإنشاء العرض والبيانات الحالية
@ -33,32 +34,35 @@ A View هو كائن قاعدة بيانات يقدم البيانات من جد
البيانات الحالية: البيانات الحالية:
`+-----------------+----------------+ ```text
| FullName | programOfStudy | +-----------------+----------------+
+-----------------+----------------+ | FullName | programOfStudy |
| Teri Gutierrez | Programming | +-----------------+----------------+
| Spencer Pautier | Programming | | Teri Gutierrez | Programming |
| Louis Ramsey | Programming | | Spencer Pautier | Programming |
| Alvin Greene | Programming | | Louis Ramsey | Programming |
| Sophie Freeman | Programming | | Alvin Greene | Programming |
+-----------------+----------------+ | Sophie Freeman | Programming |
5 rows in set (0.00 sec) +-----------------+----------------+
` 5 rows in set (0.00 sec)
```
قائمة من وجهات النظر الحالية: قائمة من وجهات النظر الحالية:
`SHOW FULL TABLES IN fcc_sql_guides_database WHERE TABLE_TYPE LIKE 'VIEW'; ```sql
` SHOW FULL TABLES IN fcc_sql_guides_database WHERE TABLE_TYPE LIKE 'VIEW';
```
`+-----------------------------------+------------+ ```text
| Tables_in_fcc_sql_guides_database | Table_type | +-----------------------------------+------------+
+-----------------------------------+------------+ | Tables_in_fcc_sql_guides_database | Table_type |
| programming-students-v | VIEW | +-----------------------------------+------------+
| students-contact-info_v | VIEW | | programming-students-v | VIEW |
| students_dropme_v | VIEW | | students-contact-info_v | VIEW |
+-----------------------------------+------------+ | students_dropme_v | VIEW |
3 rows in set (0.00 sec) +-----------------------------------+------------+
` 3 rows in set (0.00 sec)
```
### استبدال العرض ### استبدال العرض
@ -73,28 +77,30 @@ A View هو كائن قاعدة بيانات يقدم البيانات من جد
ملاحظة: تعرض طريقة العرض الآن sat\_score. ملاحظة: تعرض طريقة العرض الآن sat\_score.
`+-----------------+----------------+-----------+ ```text
| FullName | programOfStudy | sat_score | +-----------------+----------------+-----------+
+-----------------+----------------+-----------+ | FullName | programOfStudy | sat_score |
| Teri Gutierrez | Programming | 800 | +-----------------+----------------+-----------+
| Spencer Pautier | Programming | 1000 | | Teri Gutierrez | Programming | 800 |
| Louis Ramsey | Programming | 1200 | | Spencer Pautier | Programming | 1000 |
| Alvin Greene | Programming | 1200 | | Louis Ramsey | Programming | 1200 |
| Sophie Freeman | Programming | 1200 | | Alvin Greene | Programming | 1200 |
+-----------------+----------------+-----------+ | Sophie Freeman | Programming | 1200 |
` +-----------------+----------------+-----------+
```
ملاحظة: قائمة وجهات النظر لم تتغير ، يتم استبدال وجهة نظرنا. ملاحظة: قائمة وجهات النظر لم تتغير ، يتم استبدال وجهة نظرنا.
`mysql> SHOW FULL TABLES IN fcc_sql_guides_database WHERE TABLE_TYPE LIKE 'VIEW'; ```text
+-----------------------------------+------------+ mysql> SHOW FULL TABLES IN fcc_sql_guides_database WHERE TABLE_TYPE LIKE 'VIEW';
| Tables_in_fcc_sql_guides_database | Table_type | +-----------------------------------+------------+
+-----------------------------------+------------+ | Tables_in_fcc_sql_guides_database | Table_type |
| programming-students-v | VIEW | +-----------------------------------+------------+
| students-contact-info_v | VIEW | | programming-students-v | VIEW |
| students_dropme_v | VIEW | | students-contact-info_v | VIEW |
+-----------------------------------+------------+ | students_dropme_v | VIEW |
3 rows in set (0.00 sec) +-----------------------------------+------------+
` 3 rows in set (0.00 sec)
```
\* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. آمل أن يمنحك هذا على الأقل ما يكفي للبدء. يرجى الاطلاع على دليل مدير قاعدة البيانات الخاص بك والمتعة محاولة خيارات مختلفة بنفسك. \* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. آمل أن يمنحك هذا على الأقل ما يكفي للبدء. يرجى الاطلاع على دليل مدير قاعدة البيانات الخاص بك والمتعة محاولة خيارات مختلفة بنفسك.

View File

@ -12,42 +12,46 @@ localeTitle: مزود حق الانضمام
تقوم الكلمة الأساسية RIGHT JOIN بإرجاع كافة السجلات من الجدول الصحيح (table2) ، والسجلات المتطابقة من الجدول الأيسر (table1). والنتيجة هي NULL من الجانب الأيسر ، عندما لا يكون هناك أي تطابق. تقوم الكلمة الأساسية RIGHT JOIN بإرجاع كافة السجلات من الجدول الصحيح (table2) ، والسجلات المتطابقة من الجدول الأيسر (table1). والنتيجة هي NULL من الجانب الأيسر ، عندما لا يكون هناك أي تطابق.
`SELECT * ```sql
FROM table1 SELECT *
RIGHT JOIN table2 FROM table1
ON table1.column_name = table2.column_name; RIGHT JOIN table2
` ON table1.column_name = table2.column_name;
```
### استكمال قوائم الجدول لتكون مرجعا ### استكمال قوائم الجدول لتكون مرجعا
الغذاء أو بيانات الجدول الأيسر الغذاء أو بيانات الجدول الأيسر
`+---------+--------------+-----------+------------+ ```text
| ITEM_ID | ITEM_NAME | ITEM_UNIT | COMPANY_ID | +---------+--------------+-----------+------------+
+---------+--------------+-----------+------------+ | ITEM_ID | ITEM_NAME | ITEM_UNIT | COMPANY_ID |
| 1 | Chex Mix | Pcs | 16 | +---------+--------------+-----------+------------+
| 6 | Cheez-It | Pcs | 15 | | 1 | Chex Mix | Pcs | 16 |
| 2 | BN Biscuit | Pcs | 15 | | 6 | Cheez-It | Pcs | 15 |
| 3 | Mighty Munch | Pcs | 17 | | 2 | BN Biscuit | Pcs | 15 |
| 4 | Pot Rice | Pcs | 15 | | 3 | Mighty Munch | Pcs | 17 |
| 5 | Jaffa Cakes | Pcs | 18 | | 4 | Pot Rice | Pcs | 15 |
| 7 | Salt n Shake | Pcs | | | 5 | Jaffa Cakes | Pcs | 18 |
+---------+--------------+-----------+------------+ | 7 | Salt n Shake | Pcs | |
+---------+--------------+-----------+------------+
company or RIGHT table data
` company or RIGHT table data
```
نص + ------------ + --------------- + -------------- + | _معرف_ الشركة _|_ اسم _الشركة_ | COMPANY\_CITY | + ------------ + --------------- + -------------- + | 18 | ترتيب كل | بوسطن | 15 | جاك هيل المحدودة لندن | | 16 | أكاس للأغذية | دلهي | | 17 | عشاق الطعام. | لندن | | 19 | رشفة ن دغة. | نيويورك + ------------ + --------------- + -------------- + نص + ------------ + --------------- + -------------- + | _معرف_ الشركة _|_ اسم _الشركة_ | COMPANY\_CITY | + ------------ + --------------- + -------------- + | 18 | ترتيب كل | بوسطن | 15 | جاك هيل المحدودة لندن | | 16 | أكاس للأغذية | دلهي | | 17 | عشاق الطعام. | لندن | | 19 | رشفة ن دغة. | نيويورك + ------------ + --------------- + -------------- +
`To get company name from company table and company ID, item name columns from foods table, the following SQL statement can be used: ```
` To get company name from company table and company ID, item name columns from foods table, the following SQL statement can be used:
```
مزود SELECT company.company _id ، company.company_ name ، company.company _city، foods.company_ id، foods.item _name من الشركة الحق في الانضمام إلى الأطعمة على company.company_ id = foods.company\_id؛ مزود SELECT company.company _id ، company.company_ name ، company.company _city، foods.company_ id، foods.item _name من الشركة الحق في الانضمام إلى الأطعمة على company.company_ id = foods.company\_id؛
`OUTPUT ```
` OUTPUT
```
نص COMPANY _ID COMPANY_ NAME COMPANY _CITY COMPANY_ ID ITEM\_NAME نص COMPANY _ID COMPANY_ NAME COMPANY _CITY COMPANY_ ID ITEM\_NAME

View File

@ -10,40 +10,44 @@ localeTitle: SQL حدد بيان مميز
### عرض كامل للبيانات في جدول الطالب ### عرض كامل للبيانات في جدول الطالب
`USE fcc_sql_guides_database; ```sql
SELECT studentID, FullName, sat_score, programOfStudy, rcd_Created, rcd_Updated FROM student; USE fcc_sql_guides_database;
` SELECT studentID, FullName, sat_score, programOfStudy, rcd_Created, rcd_Updated FROM student;
```
`+-----------+------------------------+-----------+------------------+---------------------+---------------------+ ```text
| studentID | FullName | sat_score | programOfStudy | rcd_Created | rcd_Updated | +-----------+------------------------+-----------+------------------+---------------------+---------------------+
+-----------+------------------------+-----------+------------------+---------------------+---------------------+ | studentID | FullName | sat_score | programOfStudy | rcd_Created | rcd_Updated |
| 1 | Monique Davis | 400 | Literature | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+------------------+---------------------+---------------------+
| 2 | Teri Gutierrez | 800 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | Literature | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+------------------+---------------------+---------------------+ | 9 | Raymond F. Boyce | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+------------------+---------------------+---------------------+
` 9 rows in set (0.00 sec)
```
### الحصول على قائمة من مجالات الدراسة ### الحصول على قائمة من مجالات الدراسة
`SELECT DISTINCT programOfStudy FROM student; ```sql
` SELECT DISTINCT programOfStudy FROM student;
```
`+------------------+ ```text
| programOfStudy | +------------------+
+------------------+ | programOfStudy |
| Literature | +------------------+
| Programming | | Literature |
| Computer Science | | Programming |
+------------------+ | Computer Science |
3 rows in set (0.00 sec) +------------------+
` 3 rows in set (0.00 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -10,25 +10,27 @@ localeTitle: تحديد بيان SQL
يوضح هذا المثال ثلاثة أعمدة محددة من جدول "الطالب" وعمود واحد محسوب. تقوم قاعدة البيانات بتخزين الطالب ID ، و FirstName ، و LastName للطالب. يمكننا دمج الأعمدة الأول واسم العائلة لإنشاء العمود المحتسب لـ FullName. يوضح هذا المثال ثلاثة أعمدة محددة من جدول "الطالب" وعمود واحد محسوب. تقوم قاعدة البيانات بتخزين الطالب ID ، و FirstName ، و LastName للطالب. يمكننا دمج الأعمدة الأول واسم العائلة لإنشاء العمود المحتسب لـ FullName.
`select studentID, FirstName, LastName, FirstName + ' ' + LastName as FullName ```sql
from student; select studentID, FirstName, LastName, FirstName + ' ' + LastName as FullName
` from student;
```
`+-----------+-------------------+------------+------------------------+ ```text
| studentID | FirstName | LastName | FullName | +-----------+-------------------+------------+------------------------+
+-----------+-------------------+------------+------------------------+ | studentID | FirstName | LastName | FullName |
| 1 | Monique | Davis | Monique Davis | +-----------+-------------------+------------+------------------------+
| 2 | Teri | Gutierrez | Teri Gutierrez | | 1 | Monique | Davis | Monique Davis |
| 3 | Spencer | Pautier | Spencer Pautier | | 2 | Teri | Gutierrez | Teri Gutierrez |
| 4 | Louis | Ramsey | Louis Ramsey | | 3 | Spencer | Pautier | Spencer Pautier |
| 5 | Alvin | Greene | Alvin Greene | | 4 | Louis | Ramsey | Louis Ramsey |
| 6 | Sophie | Freeman | Sophie Freeman | | 5 | Alvin | Greene | Alvin Greene |
| 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd | | 6 | Sophie | Freeman | Sophie Freeman |
| 8 | Donald D. | Chamberlin | Donald D. Chamberlin | | 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd |
| 9 | Raymond F. | Boyce | Raymond F. Boyce | | 8 | Donald D. | Chamberlin | Donald D. Chamberlin |
+-----------+-------------------+------------+------------------------+ | 9 | Raymond F. | Boyce | Raymond F. Boyce |
9 rows in set (0.00 sec) +-----------+-------------------+------------+------------------------+
` 9 rows in set (0.00 sec)
```
\* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. \* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -16,27 +16,29 @@ localeTitle: دالة Sum Sum
إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة. إن ترتيب مجموعة البيانات هذه في ترتيب تنازلي (DESC) يضع المرشحين الذين لديهم أكبر مساهمات إجمالية في أعلى القائمة.
`SELECT Candidate, Election_year, sum(Total_$), count(*) ```sql
FROM combined_party_data SELECT Candidate, Election_year, sum(Total_$), count(*)
WHERE Election_year = 2016 FROM combined_party_data
GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns WHERE Election_year = 2016
HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD) GROUP BY Candidate, Election_year -- this tells the DBMS to summarize by these two columns
ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first. HAVING sum(Total_$) > 20000000 -- limits the rows presented from the summary of money ($20 Million USD)
` ORDER BY sum(Total_$) DESC; -- orders the presented rows with the largest ones first.
```
`+--------------------------------------------------+---------------+-------------------+----------+ ```text
| Candidate | Election_year | sum(Total_$) | count(*) | +--------------------------------------------------+---------------+-------------------+----------+
+--------------------------------------------------+---------------+-------------------+----------+ | Candidate | Election_year | sum(Total_$) | count(*) |
| CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 | +--------------------------------------------------+---------------+-------------------+----------+
| TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 | | CLINTON, HILLARY RODHAM & KAINE, TIMOTHY M (TIM) | 2016 | 568135094.4400003 | 126 |
| SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 | | TRUMP, DONALD J & PENCE, MICHAEL R (MIKE) | 2016 | 366853142.7899999 | 114 |
| CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 | | SANDERS, BERNARD (BERNIE) | 2016 | 258562022.17 | 122 |
| CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 | | CRUZ, RAFAEL EDWARD (TED) | 2016 | 93430700.29000005 | 104 |
| RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 | | CARSON, BENJAMIN S (BEN) | 2016 | 62202411.12999996 | 93 |
| BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 | | RUBIO, MARCO ANTONIO | 2016 | 44384313.9 | 106 |
+--------------------------------------------------+---------------+-------------------+----------+ | BUSH, JOHN ELLIS (JEB) | 2016 | 34606731.78 | 97 |
7 rows in set (0.01 sec) +--------------------------------------------------+---------------+-------------------+----------+
` 7 rows in set (0.01 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -22,8 +22,9 @@ localeTitle: بناء جملة SQL
يتم استخدام هذا لتحديد قاعدة البيانات التي تحتوي على جداول عبارات SQL الخاصة بك: يتم استخدام هذا لتحديد قاعدة البيانات التي تحتوي على جداول عبارات SQL الخاصة بك:
`use fcc_sql_guides_database; -- select the guide sample database ```sql
` use fcc_sql_guides_database; -- select the guide sample database
```
### اختر من جمل ### اختر من جمل

View File

@ -16,21 +16,23 @@ localeTitle: مشغل اتحاد SQL
بيان SQL بيان SQL
`SELECT 'aaaaa' ```sql
UNION SELECT 'aaaaa'
SELECT 'bbbbbbbbb'; UNION
` SELECT 'bbbbbbbbb';
```
انتاج | انتاج |
`+-----------+ ```text
| aaaaa | +-----------+
+-----------+ | aaaaa |
| aaaaa | +-----------+
| bbbbbbbbb | | aaaaa |
+-----------+ | bbbbbbbbb |
2 rows in set (0.00 sec) +-----------+
` 2 rows in set (0.00 sec)
```
### مثال باستخدام جداول الطلاب ### مثال باستخدام جداول الطلاب
@ -45,15 +47,16 @@ localeTitle: مشغل اتحاد SQL
\`\` \`النص + ----------- + -------------------------------- + | StudentID | FullName | + ----------- + -------------------------------- + | 1 | مونيك ديفيز | 2 | تيري جوتيريز | | 3 | سبنسر باوتير | | 4 | لويس رمزي | 5 | ألفين غرين | | 7 | Maximo.Smith@freeCodeCamp.org | | 8 | Michael.Roach@freeCodeCamp.ort | + ----------- + -------------------------------- + 7 صفوف في مجموعة (0.00 ثانية) \`\` \`النص + ----------- + -------------------------------- + | StudentID | FullName | + ----------- + -------------------------------- + | 1 | مونيك ديفيز | 2 | تيري جوتيريز | | 3 | سبنسر باوتير | | 4 | لويس رمزي | 5 | ألفين غرين | | 7 | Maximo.Smith@freeCodeCamp.org | | 8 | Michael.Roach@freeCodeCamp.ort | + ----------- + -------------------------------- + 7 صفوف في مجموعة (0.00 ثانية)
`## SQL UNION ALL Operator ```
## SQL UNION ALL Operator
The UNION ALL operator is an extension to UNION operator where it should result you a A+B of rows in the ouptput assuming A and B is your input, in simple terms UNION ALL doesn't deduplicate.
The UNION ALL operator is an extension to UNION operator where it should result you a A+B of rows in the ouptput assuming A and B is your input, in simple terms UNION ALL doesn't deduplicate.
### Basic Syntax
### Basic Syntax
SQL Statement
` SQL Statement
```
مزود SELECT expression1، expression2،… expression _n من الجداول \[حيث الظروف\] الاتحاد كله SELECT expression1، expression2،… expression_ n من الجداول \[حيث الظروف\] ؛ \`\` \` مزود SELECT expression1، expression2،… expression _n من الجداول \[حيث الظروف\] الاتحاد كله SELECT expression1، expression2،… expression_ n من الجداول \[حيث الظروف\] ؛ \`\` \`

View File

@ -18,24 +18,26 @@ localeTitle: استعلام تحديث SQL
هذا هو جدول الطلاب ونحن نبدأ هذه العملية هذا هو جدول الطلاب ونحن نبدأ هذه العملية
`SELECT * FROM student; ```sql
` SELECT * FROM student;
```
`+-----------+------------------------+-----------+------------------+---------------------+---------------------+ ```text
| studentID | FullName | sat_score | programOfStudy | rcd_Created | rcd_Updated | +-----------+------------------------+-----------+------------------+---------------------+---------------------+
+-----------+------------------------+-----------+------------------+---------------------+---------------------+ | studentID | FullName | sat_score | programOfStudy | rcd_Created | rcd_Updated |
| 1 | Monique Davis | 400 | Literature | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+------------------+---------------------+---------------------+
| 2 | Teri Gutierrez | 800 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | Literature | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | Programming | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+------------------+---------------------+---------------------+ | 9 | Raymond F. Boyce | 2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+------------------+---------------------+---------------------+
` 9 rows in set (0.00 sec)
```
### تغيير الجدول وإضافة حقل جديد ### تغيير الجدول وإضافة حقل جديد
@ -45,45 +47,48 @@ localeTitle: استعلام تحديث SQL
يتم تنفيذ جدول الطالب بعد التعديل. يتم تنفيذ جدول الطالب بعد التعديل.
`mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student; ```text
+------------------------+-----------+------------------+----------------+ mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student;
| FullName | sat_score | programOfStudy | schoolEmailAdr | +------------------------+-----------+------------------+----------------+
+------------------------+-----------+------------------+----------------+ | FullName | sat_score | programOfStudy | schoolEmailAdr |
| Monique Davis | 400 | Literature | NULL | +------------------------+-----------+------------------+----------------+
| Teri Gutierrez | 800 | Programming | NULL | | Monique Davis | 400 | Literature | NULL |
| Spencer Pautier | 1000 | Programming | NULL | | Teri Gutierrez | 800 | Programming | NULL |
| Louis Ramsey | 1200 | Programming | NULL | | Spencer Pautier | 1000 | Programming | NULL |
| Alvin Greene | 1200 | Programming | NULL | | Louis Ramsey | 1200 | Programming | NULL |
| Sophie Freeman | 1200 | Programming | NULL | | Alvin Greene | 1200 | Programming | NULL |
| Edgar Frank "Ted" Codd | 2400 | Computer Science | NULL | | Sophie Freeman | 1200 | Programming | NULL |
| Donald D. Chamberlin | 2400 | Computer Science | NULL | | Edgar Frank "Ted" Codd | 2400 | Computer Science | NULL |
| Raymond F. Boyce | 2400 | Computer Science | NULL | | Donald D. Chamberlin | 2400 | Computer Science | NULL |
+------------------------+-----------+------------------+----------------+ | Raymond F. Boyce | 2400 | Computer Science | NULL |
9 rows in set (0.00 sec) +------------------------+-----------+------------------+----------------+
` 9 rows in set (0.00 sec)
```
### اختبار المنطق (خطوة مهمة جدا!) ### اختبار المنطق (خطوة مهمة جدا!)
`SELECT FullName, instr(FullName," ") AS firstSpacePosition, ```sql
concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") AS schoolEmail SELECT FullName, instr(FullName," ") AS firstSpacePosition,
FROM student; concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") AS schoolEmail
` FROM student;
```
`+------------------------+--------------------+------------------------+ ```text
| FullName | firstSpacePosition | schoolEmail | +------------------------+--------------------+------------------------+
+------------------------+--------------------+------------------------+ | FullName | firstSpacePosition | schoolEmail |
| Monique Davis | 8 | Monique@someSchool.edu | +------------------------+--------------------+------------------------+
| Teri Gutierrez | 5 | Teri@someSchool.edu | | Monique Davis | 8 | Monique@someSchool.edu |
| Spencer Pautier | 8 | Spencer@someSchool.edu | | Teri Gutierrez | 5 | Teri@someSchool.edu |
| Louis Ramsey | 6 | Louis@someSchool.edu | | Spencer Pautier | 8 | Spencer@someSchool.edu |
| Alvin Greene | 6 | Alvin@someSchool.edu | | Louis Ramsey | 6 | Louis@someSchool.edu |
| Sophie Freeman | 7 | Sophie@someSchool.edu | | Alvin Greene | 6 | Alvin@someSchool.edu |
| Edgar Frank "Ted" Codd | 6 | Edgar@someSchool.edu | | Sophie Freeman | 7 | Sophie@someSchool.edu |
| Donald D. Chamberlin | 7 | Donald@someSchool.edu | | Edgar Frank "Ted" Codd | 6 | Edgar@someSchool.edu |
| Raymond F. Boyce | 8 | Raymond@someSchool.edu | | Donald D. Chamberlin | 7 | Donald@someSchool.edu |
+------------------------+--------------------+------------------------+ | Raymond F. Boyce | 8 | Raymond@someSchool.edu |
9 rows in set (0.00 sec) +------------------------+--------------------+------------------------+
` 9 rows in set (0.00 sec)
```
_ملاحظة حول concat (): في MySQL يتم استخدام هذا الأمر في سلاسل مدمجة ، وليس كذلك في إصدارات SQL الأخرى (راجع الدليل). في هذا الاستخدام يعمل مثل هذا: يتم دمج السلسلة الفرعية للحقل FullName مع عدم تضمين المساحة الأولى مع "@ someSchool.edu". في العالم الحقيقي سيكون هذا أكثر تعقيدًا وستحتاج إلى التأكد من أن عنوان البريد الإلكتروني فريد من نوعه._ _ملاحظة حول concat (): في MySQL يتم استخدام هذا الأمر في سلاسل مدمجة ، وليس كذلك في إصدارات SQL الأخرى (راجع الدليل). في هذا الاستخدام يعمل مثل هذا: يتم دمج السلسلة الفرعية للحقل FullName مع عدم تضمين المساحة الأولى مع "@ someSchool.edu". في العالم الحقيقي سيكون هذا أكثر تعقيدًا وستحتاج إلى التأكد من أن عنوان البريد الإلكتروني فريد من نوعه._
@ -91,28 +96,30 @@ _ملاحظة حول concat (): في MySQL يتم استخدام هذا الأم
سنتظاهر بأن هذا ما نريده ونحدّث الجدول بهذه المعلومات: سنتظاهر بأن هذا ما نريده ونحدّث الجدول بهذه المعلومات:
`UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") ```sql
WHERE schoolEmailAdr is NULL; UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu")
` WHERE schoolEmailAdr is NULL;
```
نجاح! نجاح!
`mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student; ```text
+------------------------+-----------+------------------+------------------------+ mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student;
| FullName | sat_score | programOfStudy | schoolEmailAdr | +------------------------+-----------+------------------+------------------------+
+------------------------+-----------+------------------+------------------------+ | FullName | sat_score | programOfStudy | schoolEmailAdr |
| Monique Davis | 400 | Literature | Monique@someSchool.edu | +------------------------+-----------+------------------+------------------------+
| Teri Gutierrez | 800 | Programming | Teri@someSchool.edu | | Monique Davis | 400 | Literature | Monique@someSchool.edu |
| Spencer Pautier | 1000 | Programming | Spencer@someSchool.edu | | Teri Gutierrez | 800 | Programming | Teri@someSchool.edu |
| Louis Ramsey | 1200 | Programming | Louis@someSchool.edu | | Spencer Pautier | 1000 | Programming | Spencer@someSchool.edu |
| Alvin Greene | 1200 | Programming | Alvin@someSchool.edu | | Louis Ramsey | 1200 | Programming | Louis@someSchool.edu |
| Sophie Freeman | 1200 | Programming | Sophie@someSchool.edu | | Alvin Greene | 1200 | Programming | Alvin@someSchool.edu |
| Edgar Frank "Ted" Codd | 2400 | Computer Science | Edgar@someSchool.edu | | Sophie Freeman | 1200 | Programming | Sophie@someSchool.edu |
| Donald D. Chamberlin | 2400 | Computer Science | Donald@someSchool.edu | | Edgar Frank "Ted" Codd | 2400 | Computer Science | Edgar@someSchool.edu |
| Raymond F. Boyce | 2400 | Computer Science | Raymond@someSchool.edu | | Donald D. Chamberlin | 2400 | Computer Science | Donald@someSchool.edu |
+------------------------+-----------+------------------+------------------------+ | Raymond F. Boyce | 2400 | Computer Science | Raymond@someSchool.edu |
9 rows in set (0.00 sec) +------------------------+-----------+------------------+------------------------+
` 9 rows in set (0.00 sec)
```
كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. كما هو الحال مع كل هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -8,32 +8,36 @@ localeTitle: SQL Update Statement
كن حذرا. يمكنك تحديث جميع سجلات الجدول أو عدد قليل فقط. استخدم شرط `WHERE` لتحديد السجلات التي تريد تحديثها. من الممكن تحديث عمود واحد أو أكثر في كل مرة. الصيغة هي: كن حذرا. يمكنك تحديث جميع سجلات الجدول أو عدد قليل فقط. استخدم شرط `WHERE` لتحديد السجلات التي تريد تحديثها. من الممكن تحديث عمود واحد أو أكثر في كل مرة. الصيغة هي:
`UPDATE table_name ```sql
SET column1 = value1, UPDATE table_name
column2 = value2, ... SET column1 = value1,
WHERE condition; column2 = value2, ...
` WHERE condition;
```
في ما يلي مثال على تحديث اسم السجل الذي يحمل الرقم التعريفي 4: في ما يلي مثال على تحديث اسم السجل الذي يحمل الرقم التعريفي 4:
`UPDATE Person ```sql
SET Name = “Elton John” UPDATE Person
WHERE Id = 4; SET Name = Elton John
` WHERE Id = 4;
```
يمكنك أيضًا تحديث الأعمدة في جدول باستخدام القيم من الجداول الأخرى. استخدم جملة `JOIN` للحصول على البيانات من جداول متعددة. الصيغة هي: يمكنك أيضًا تحديث الأعمدة في جدول باستخدام القيم من الجداول الأخرى. استخدم جملة `JOIN` للحصول على البيانات من جداول متعددة. الصيغة هي:
`UPDATE table_name1 ```sql
SET table_name1.column1 = table_name2.columnA UPDATE table_name1
table_name1.column2 = table_name2.columnB SET table_name1.column1 = table_name2.columnA
FROM table_name1 table_name1.column2 = table_name2.columnB
JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key FROM table_name1
` JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key
```
في ما يلي مثال على تحديث مدير جميع السجلات: في ما يلي مثال على تحديث مدير جميع السجلات:
`UPDATE Person ```sql
SET Person.Manager = Department.Manager UPDATE Person
FROM Person SET Person.Manager = Department.Manager
JOIN Department ON Person.DepartmentID = Department.ID FROM Person
` JOIN Department ON Person.DepartmentID = Department.ID
```

View File

@ -12,24 +12,26 @@ localeTitle: SQL حيث البند
في ما يلي قائمة الطلاب الكاملة الحالية لمقارنة مجموعة نتائج `WHERE` : في ما يلي قائمة الطلاب الكاملة الحالية لمقارنة مجموعة نتائج `WHERE` :
`select studentID, FullName, sat_score, rcd_updated from student; ```sql
` select studentID, FullName, sat_score, rcd_updated from student;
```
`+-----------+------------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+------------------------+-----------+---------------------+
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+ | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
9 rows in set (0.00 sec) +-----------+------------------------+-----------+---------------------+
` 9 rows in set (0.00 sec)
```
سيتم تقديم الصفوف التي ... سيتم تقديم الصفوف التي ...
@ -38,24 +40,26 @@ localeTitle: SQL حيث البند
في ما يلي طلب بحث محدّث ، حيث لن يتم عرض أي سجل يحتوي على درجة SAT في هذه القائمة (1000 ، 1400): في ما يلي طلب بحث محدّث ، حيث لن يتم عرض أي سجل يحتوي على درجة SAT في هذه القائمة (1000 ، 1400):
`select studentID, FullName, sat_score, recordUpdated ```sql
from student select studentID, FullName, sat_score, recordUpdated
where (studentID between 1 and 5 or studentID = 8) from student
and where (studentID between 1 and 5 or studentID = 8)
sat_score NOT in (1000, 1400); and
` sat_score NOT in (1000, 1400);
```
`+-----------+----------------------+-----------+---------------------+ ```text
| studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated |
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | +-----------+----------------------+-----------+---------------------+
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
+-----------+----------------------+-----------+---------------------+ | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
5 rows in set (0.00 sec) +-----------+----------------------+-----------+---------------------+
` 5 rows in set (0.00 sec)
```
\* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي. \* كما هو الحال مع جميع هذه الأشياء SQL هناك أكثر من ذلك بكثير من ما هو موجود في هذا الدليل التمهيدي.

View File

@ -24,25 +24,28 @@ localeTitle: إدارة عدة مفاتيح SSH
لبدء عملك ، عليك استنساخ مستودع git باستخدام SSH: لبدء عملك ، عليك استنساخ مستودع git باستخدام SSH:
`git clone git@github.com:steve/raspberry-spy.git ```bash
` git clone git@github.com:steve/raspberry-spy.git
```
في هذه اللحظة ، سيكون GitHub مثل: "Yo ، هذا مستودع خاص! نحن بحاجة إلى تشفير حركة المرور باستخدام هذا المفتاح العام الذي أمتلكه هنا ومفتاحك الخاص" في هذه اللحظة ، سيكون GitHub مثل: "Yo ، هذا مستودع خاص! نحن بحاجة إلى تشفير حركة المرور باستخدام هذا المفتاح العام الذي أمتلكه هنا ومفتاحك الخاص"
لقد قمت بإضافة المفتاح العام إلى ملف التعريف الخاص بك على GitHub ، ولكن SSH لديه بطريقة أو بأخرى معرفة أين يوجد المفتاح الخاص المقابل الخاص بك. نظرًا لأننا لا نملك أي فكرة عن المفتاح الخاص الذي يجب استخدامه عند استخدام SSH في `git@github.com` ، يحاول عميل SSH العثور على مفتاح في الموقع الافتراضي ، وهو `~/.ssh/id_rsa` - إنه أفضل تخمين له. إذا لم يكن هناك ملف في هذا الموقع ، فستتلقى خطأً: لقد قمت بإضافة المفتاح العام إلى ملف التعريف الخاص بك على GitHub ، ولكن SSH لديه بطريقة أو بأخرى معرفة أين يوجد المفتاح الخاص المقابل الخاص بك. نظرًا لأننا لا نملك أي فكرة عن المفتاح الخاص الذي يجب استخدامه عند استخدام SSH في `git@github.com` ، يحاول عميل SSH العثور على مفتاح في الموقع الافتراضي ، وهو `~/.ssh/id_rsa` - إنه أفضل تخمين له. إذا لم يكن هناك ملف في هذا الموقع ، فستتلقى خطأً:
`Cloning into 'raspberry-spy'... ```bash
Permission denied (publickey). Cloning into 'raspberry-spy'...
fatal: Could not read from remote repository. Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists. Please make sure you have the correct access rights
` and the repository exists.
```
إذا كان لديك _بعض_ المفاتيح الخاصة المخزنة في الملف `~/.ssh/id_rsa` ، `~/.ssh/id_rsa` عميل SSH هذا المفتاح الخاص لتشفير الاتصالات. إذا كان هذا المفتاح مرتبطًا بكلمة مرور (كما ينبغي أن يكون) ، فستتم مطالبتك بكلمة مرور ، مثل: إذا كان لديك _بعض_ المفاتيح الخاصة المخزنة في الملف `~/.ssh/id_rsa` ، `~/.ssh/id_rsa` عميل SSH هذا المفتاح الخاص لتشفير الاتصالات. إذا كان هذا المفتاح مرتبطًا بكلمة مرور (كما ينبغي أن يكون) ، فستتم مطالبتك بكلمة مرور ، مثل:
`Enter passphrase for key '/Users/steve/.ssh/id_rsa': ```bash
` Enter passphrase for key '/Users/steve/.ssh/id_rsa':
```
إذا أدخلت عبارة المرور الصحيحة وإذا كان هذا المفتاح الخاص هو بالفعل المفتاح الذي يتوافق مع المفتاح العام الذي أرفقته بملفك الشخصي ، فسيتم سداد كل شيء بشكل جيد وسيتم استنساخ المستودع بنجاح. إذا أدخلت عبارة المرور الصحيحة وإذا كان هذا المفتاح الخاص هو بالفعل المفتاح الذي يتوافق مع المفتاح العام الذي أرفقته بملفك الشخصي ، فسيتم سداد كل شيء بشكل جيد وسيتم استنساخ المستودع بنجاح.
@ -50,8 +53,9 @@ localeTitle: إدارة عدة مفاتيح SSH
إذا كنت تريد استخدام مفتاح خاص سميته بشكل مختلف ، فيجب عليك إضافته يدويًا: إذا كنت تريد استخدام مفتاح خاص سميته بشكل مختلف ، فيجب عليك إضافته يدويًا:
`ssh-add ~/.ssh/_id_rsa ```bash
` ssh-add ~/.ssh/_id_rsa
```
بعد إدخال عبارة المرور ، يمكنك التحقق مما إذا كان المفتاح قد تمت إضافته إلى `ssh-agent` (عميل SSH) عن طريق تنفيذ `ssh-add -l` . يقوم هذا الأمر بإدراج جميع المفاتيح المتوفرة حاليًا لعميل SSH. بعد إدخال عبارة المرور ، يمكنك التحقق مما إذا كان المفتاح قد تمت إضافته إلى `ssh-agent` (عميل SSH) عن طريق تنفيذ `ssh-add -l` . يقوم هذا الأمر بإدراج جميع المفاتيح المتوفرة حاليًا لعميل SSH.
@ -77,21 +81,23 @@ localeTitle: إدارة عدة مفاتيح SSH
أول شيء سنقوم بحله باستخدام ملف `config` هذا هو تجنب الاضطرار إلى إضافة مفاتيح SSH ذات اسم مخصص باستخدام `ssh-add` . بفرض افتراض أن مفتاح SSH الخاص بك هو `~/.ssh/_id_rsa` ، أضف المتابعة إلى ملف `config` : أول شيء سنقوم بحله باستخدام ملف `config` هذا هو تجنب الاضطرار إلى إضافة مفاتيح SSH ذات اسم مخصص باستخدام `ssh-add` . بفرض افتراض أن مفتاح SSH الخاص بك هو `~/.ssh/_id_rsa` ، أضف المتابعة إلى ملف `config` :
`Host github.com ```bash
HostName github.com Host github.com
User git HostName github.com
IdentityFile ~/.ssh/_id_rsa User git
IdentitiesOnly yes IdentityFile ~/.ssh/_id_rsa
` IdentitiesOnly yes
```
الآن تأكد من أن `~/.ssh/_id_rsa` ليس في `ssh-agent` بتنفيذ `ssh-add -D` . سيؤدي هذا الأمر إلى إزالة كافة المفاتيح من جلسة عمل `ssh-agent` النشطة حاليًا. يتم إعادة ضبط الجلسة في كل مرة تقوم فيها بتسجيل الخروج أو إعادة التشغيل (أو إذا قمت بقتل عملية `ssh-agent` يدوياً). يمكننا "محاكاة" إعادة التشغيل عن طريق تنفيذ الأمر المذكور. الآن تأكد من أن `~/.ssh/_id_rsa` ليس في `ssh-agent` بتنفيذ `ssh-add -D` . سيؤدي هذا الأمر إلى إزالة كافة المفاتيح من جلسة عمل `ssh-agent` النشطة حاليًا. يتم إعادة ضبط الجلسة في كل مرة تقوم فيها بتسجيل الخروج أو إعادة التشغيل (أو إذا قمت بقتل عملية `ssh-agent` يدوياً). يمكننا "محاكاة" إعادة التشغيل عن طريق تنفيذ الأمر المذكور.
إذا حاولت استنساخ مستودع GitHub الخاص بك الآن ، فسيكون ذلك كما لو قمنا بإضافة المفتاح يدويًا (كما فعلنا من قبل). سيُطلب منك كلمة المرور: إذا حاولت استنساخ مستودع GitHub الخاص بك الآن ، فسيكون ذلك كما لو قمنا بإضافة المفتاح يدويًا (كما فعلنا من قبل). سيُطلب منك كلمة المرور:
`git clone git@github.com:steve/raspberry-spy.git ```bash
Cloning into 'raspberry-spy'... git clone git@github.com:steve/raspberry-spy.git
Enter passphrase for key '/Users/steve/.ssh/_id_rsa': Cloning into 'raspberry-spy'...
` Enter passphrase for key '/Users/steve/.ssh/_id_rsa':
```
ستلاحظ أن المفتاح الذي نطالب بكلمة المرور الخاصة به هو نفس المفتاح الذي حددناه في ملف `config` بنا. بعد إدخال كلمة مرور مفتاح SSH الصحيحة ، سيتم استنساخ المستودع بنجاح. ستلاحظ أن المفتاح الذي نطالب بكلمة المرور الخاصة به هو نفس المفتاح الذي حددناه في ملف `config` بنا. بعد إدخال كلمة مرور مفتاح SSH الصحيحة ، سيتم استنساخ المستودع بنجاح.
@ -101,32 +107,35 @@ localeTitle: إدارة عدة مفاتيح SSH
هذا يفتح البوابات. عندما تقوم بإعادة هذا ، فإن ذهنك يتسابق ويفكر في كيفية انتهاء كل مشاكلك مع مفاتيح SSH. فيما يلي بعض أمثلة التكوين المفيدة: هذا يفتح البوابات. عندما تقوم بإعادة هذا ، فإن ذهنك يتسابق ويفكر في كيفية انتهاء كل مشاكلك مع مفاتيح SSH. فيما يلي بعض أمثلة التكوين المفيدة:
`Host bitbucket-corporate ```bash
HostName bitbucket.org Host bitbucket-corporate
User git HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa_corp User git
IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_corp
` IdentitiesOnly yes
```
الآن يمكنك استخدام `git clone git@bitbucket-corporate:company/project.git` الآن يمكنك استخدام `git clone git@bitbucket-corporate:company/project.git`
`Host bitbucket-personal ```bash
HostName bitbucket.org Host bitbucket-personal
User git HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa_personal User git
IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_personal
` IdentitiesOnly yes
```
الآن يمكنك استخدام `git clone git@bitbucket-personal:steve/other-pi-project.git` الآن يمكنك استخدام `git clone git@bitbucket-personal:steve/other-pi-project.git`
`Host myserver ```
HostName ssh.steve.com Host myserver
Port 1111 HostName ssh.steve.com
IdentityFile ~/.ssh/id_rsa_personal Port 1111
IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_personal
User steve IdentitiesOnly yes
IdentitiesOnly yes User steve
` IdentitiesOnly yes
```
الآن يمكنك SSH في الخادم الخاص بك باستخدام `ssh myserver` . كم ذلك رائع؟ لا تحتاج إلى إدخال المنفذ واسم المستخدم يدويًا في كل مرة تقوم فيها بتنفيذ الأمر `ssh` . الآن يمكنك SSH في الخادم الخاص بك باستخدام `ssh myserver` . كم ذلك رائع؟ لا تحتاج إلى إدخال المنفذ واسم المستخدم يدويًا في كل مرة تقوم فيها بتنفيذ الأمر `ssh` .
@ -134,14 +143,16 @@ localeTitle: إدارة عدة مفاتيح SSH
يمكنك أيضًا تحديد المفتاح المحدد الذي يجب استخدامه لمخزون معين ، وتجاوز أي شيء في `config` SSH. يمكن تحديد أمر SSH محدد عن طريق تعيين `sshCommand` تحت `core` في `<project>/.git/config` . مثال: يمكنك أيضًا تحديد المفتاح المحدد الذي يجب استخدامه لمخزون معين ، وتجاوز أي شيء في `config` SSH. يمكن تحديد أمر SSH محدد عن طريق تعيين `sshCommand` تحت `core` في `<project>/.git/config` . مثال:
`[core] ```bash
sshCommand = ssh -i ~/.ssh/id_rsa_corp [core]
` sshCommand = ssh -i ~/.ssh/id_rsa_corp
```
هذا ممكن مع git 2.10 أو في وقت لاحق. يمكنك أيضًا استخدام هذا الأمر لتجنب تعديل الملف يدويًا: هذا ممكن مع git 2.10 أو في وقت لاحق. يمكنك أيضًا استخدام هذا الأمر لتجنب تعديل الملف يدويًا:
`git config core.sshCommand 'ssh -i ~/.ssh/id_rsa_corp' ```bash
` git config core.sshCommand 'ssh -i ~/.ssh/id_rsa_corp'
```
### إدارة كلمة المرور ### إدارة كلمة المرور
@ -149,8 +160,9 @@ localeTitle: إدارة عدة مفاتيح SSH
ابدأ بإضافة مفتاحك إلى keychain عبر تمرير الخيار `-K` إلى الأمر `ssh-add` : ابدأ بإضافة مفتاحك إلى keychain عبر تمرير الخيار `-K` إلى الأمر `ssh-add` :
`ssh-add -K ~/.ssh/id_rsa_whatever ```bash
` ssh-add -K ~/.ssh/id_rsa_whatever
```
يمكنك الآن رؤية مفتاح SSH في keychain. على MacOS ، يبدو الأمر كالتالي: ![Keychain Access](https://raw.githubusercontent.com/fvoska/guides/master/static/images/pages/ssh/managing-multiple-ssh-keys/keychain-access.png "الوصول إلى سلسلة المفاتيح") يمكنك الآن رؤية مفتاح SSH في keychain. على MacOS ، يبدو الأمر كالتالي: ![Keychain Access](https://raw.githubusercontent.com/fvoska/guides/master/static/images/pages/ssh/managing-multiple-ssh-keys/keychain-access.png "الوصول إلى سلسلة المفاتيح")
@ -158,10 +170,11 @@ localeTitle: إدارة عدة مفاتيح SSH
اتضح أن هناك طارة واحدة أكثر من القفز. افتح ملف SSH `config` الخاص بك وقم بإضافة ما يلي: اتضح أن هناك طارة واحدة أكثر من القفز. افتح ملف SSH `config` الخاص بك وقم بإضافة ما يلي:
`Host * ```bash
AddKeysToAgent yes Host *
UseKeychain yes AddKeysToAgent yes
` UseKeychain yes
```
الآن ، سوف تبحث SSH عن المفتاح في keychain وإذا وجدت أنه لن تتم مطالبتك بكلمة المرور. مفتاح سيضاف أيضا إلى `ssh-agent` . على MacOS ، سيعمل هذا على MacOS Sierra 10.12.2 أو ما بعده. في Linux ، يمكنك استخدام شيء ما مثل `gnome-keyring` وقد يعمل حتى بدون إجراء هذا التعديل الأخير على `config` SSH. أما بالنسبة لنظام التشغيل Windows - من يدري ، أليس كذلك؟ الآن ، سوف تبحث SSH عن المفتاح في keychain وإذا وجدت أنه لن تتم مطالبتك بكلمة المرور. مفتاح سيضاف أيضا إلى `ssh-agent` . على MacOS ، سيعمل هذا على MacOS Sierra 10.12.2 أو ما بعده. في Linux ، يمكنك استخدام شيء ما مثل `gnome-keyring` وقد يعمل حتى بدون إجراء هذا التعديل الأخير على `config` SSH. أما بالنسبة لنظام التشغيل Windows - من يدري ، أليس كذلك؟

View File

@ -10,10 +10,11 @@ SVG أو Scalable Vector Graphics هو معيار ويب لتعريف الرسو
يبدأ المطوّرون رسم SVG باستخدام العلامة `<svg>` ومساحة اسم XML كما يلي: يبدأ المطوّرون رسم SVG باستخدام العلامة `<svg>` ومساحة اسم XML كما يلي:
`<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> ```svg
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
</svg>
` </svg>
```
يتضمن النموذج أيضًا سمة `version` . سمة `version` اختيارية ولكن يُنصح باستخدامها مع مواصفات XML. يتضمن النموذج أيضًا سمة `version` . سمة `version` اختيارية ولكن يُنصح باستخدامها مع مواصفات XML.
@ -67,16 +68,17 @@ SVG أو Scalable Vector Graphics هو معيار ويب لتعريف الرسو
جزء. جزء.
`<p > Before canvas . </p > ```
< canvas width ="120" height ="60" > </ canvas > <p > Before canvas . </p >
<p > After canvas . </p > < canvas width ="120" height ="60" > </ canvas >
< script > <p > After canvas . </p >
var canvas = document . querySelector (" canvas ") ; < script >
var context = canvas . getContext ("2 d ") ; var canvas = document . querySelector (" canvas ") ;
context . fillStyle = " red "; var context = canvas . getContext ("2 d ") ;
context . fillRect (10 , 10 , 100 , 50) ; context . fillStyle = " red ";
</ script > context . fillRect (10 , 10 , 100 , 50) ;
` </ script >
```
![](http://www.crwflags.com/fotw/images/s/sly@stt.gif) ![](http://www.crwflags.com/fotw/images/s/sly@stt.gif)
@ -86,40 +88,42 @@ SVG أو Scalable Vector Graphics هو معيار ويب لتعريف الرسو
يحتوي متغير النتائج على مصفوفة من الكائنات التي تمثل ردود المسح. يحتوي متغير النتائج على مصفوفة من الكائنات التي تمثل ردود المسح.
`var results = [ ```
{ name : " Satisfied " , count : 1043 , color : " lightblue "} , var results = [
{ name : " Neutral " , count : 563 , color : " lightgreen "} , { name : " Satisfied " , count : 1043 , color : " lightblue "} ,
{ name : " Unsatisfied " , count : 510 , color : " pink "} , { name : " Neutral " , count : 563 , color : " lightgreen "} ,
{ name : " No comment " , count : 175 , color : " silver "} { name : " Unsatisfied " , count : 510 , color : " pink "} ,
]; { name : " No comment " , count : 175 , color : " silver "}
` ];
```
لرسم مخطط دائري ، نرسم عددًا من الشرائح الدائرية ، تتكون كل منها من قوس وزوج من الخطوط إلى مركز هذا القوس. يمكننا حساب الزاوية المأخوذة من كل قوس بقسمة دائرة كاملة (2 π) على العدد الإجمالي للاستجابات ثم ضرب ذلك العدد (زاوية لكل استجابة) بعدد الأشخاص الذين اختاروا اختيارًا معينًا. لرسم مخطط دائري ، نرسم عددًا من الشرائح الدائرية ، تتكون كل منها من قوس وزوج من الخطوط إلى مركز هذا القوس. يمكننا حساب الزاوية المأخوذة من كل قوس بقسمة دائرة كاملة (2 π) على العدد الإجمالي للاستجابات ثم ضرب ذلك العدد (زاوية لكل استجابة) بعدد الأشخاص الذين اختاروا اختيارًا معينًا.
`< canvas width ="200" height ="200" > </ canvas > ```
< script > < canvas width ="200" height ="200" > </ canvas >
var cx = document . querySelector (" canvas ") . getContext ("2 d ") ; < script >
var total = results . reduce ( function ( sum , choice ) { var cx = document . querySelector (" canvas ") . getContext ("2 d ") ;
return sum + choice . count ; var total = results . reduce ( function ( sum , choice ) {
} , 0) ; return sum + choice . count ;
} , 0) ;
// Start at the top
// Start at the top
var currentAngle = -0.5 * Math . PI ;
results . forEach ( function ( result ) { var currentAngle = -0.5 * Math . PI ;
var sliceAngle = ( result . count / total ) * 2 * Math . PI ; results . forEach ( function ( result ) {
cx . beginPath () ; var sliceAngle = ( result . count / total ) * 2 * Math . PI ;
// center =100 ,100 , radius =100 cx . beginPath () ;
// from current angle , clockwise by slice ' s angle // center =100 ,100 , radius =100
cx . arc (100 , 100 , 100 , // from current angle , clockwise by slice ' s angle
currentAngle , currentAngle + sliceAngle ); cx . arc (100 , 100 , 100 ,
currentAngle += sliceAngle ; currentAngle , currentAngle + sliceAngle );
cx . lineTo (100 , 100) ; currentAngle += sliceAngle ;
cx . fillStyle = result . color ; cx . lineTo (100 , 100) ;
cx . fill () ; cx . fillStyle = result . color ;
}) ; cx . fill () ;
</ script > }) ;
` </ script >
```
هذا يرسم المخطط التالي: ![](https://pbs.twimg.com/media/CTDvkA8UwAAdJg5.png) هذا يرسم المخطط التالي: ![](https://pbs.twimg.com/media/CTDvkA8UwAAdJg5.png)